python文件读写(三)-Excel表格三剑客xlwt,xlrd,xlutils

1.写xlwt

import xlwt
f = xlwt.Workbook()
sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)
style = xlwt.XFStyle()#创建格式style1

def font(Name="Times New Roman",Bold=True,Colour=0,Height=0x190,Italic=False,Struck=False):#设置字体格式
   doc='''
     clolour_index: 0 = Black, 1 = White, 2 = Red, 3 = Green,
     4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan
     underline:UNDERLINE_DOUBLE 代表双下划线,另外还有 UNDERLINE_NONE,
     UNDERLINE_SINGLE,
     UNDERLINE_SINGLE_ACC, UNDERLINE_DOUBLE, UNDERLINE_DOUBLE_ACC
     height: #0x190是16进制,换成10进制为400,然后除以20,就得到字体的大小为20  
   '''
   font = xlwt.Font()   #创建font1
   font.name = Name  #字体为'Times New Roman',字体为'Algerian'
   font.bold = Bold   #加粗
   font.colour_index = Colour
   font.underline = xlwt.Font.UNDERLINE_NONE
   font.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT   #设置上标
   font.family = xlwt.Font.FAMILY_ROMAN
   font.height = Height
   font.italic = Italic  #斜体
   font.struck_out = Struck   #删除线
   return font


def aligment():#设置单元格对齐方式
   doc='''#设置水平对齐为居中,May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER,
            HORZ_RIGHT,HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL,
            HORZ_DISTRIBUTED
            #设置垂直对齐为居中,May be: VERT_TOP,
            VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED'''
   alignment = xlwt.Alignment()    #创建alignment
   alignment.horz = xlwt.Alignment.HORZ_CENTER
   alignment.vert = xlwt.Alignment.VERT_CENTER
   return alignment


#设置单元格背景颜色
def pattern():
   pattern= xlwt.Pattern()  #创建pattern_yellow
   pattern.pattern = xlwt.Pattern.SOLID_PATTERN  #设置填充模式为全部填充
   pattern.pattern_fore_colour = 5    #设置填充颜色为yellow黄色
   return pattern


#设置单元格边框
def border(leftcolour=0x10 ,rightcolour=0x20,topcolour=0x30,bottomcolour=0x40):
   doc='''设置左边框的类型为虚线 May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED,
   THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED,
   MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED,
   MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED,
   or 0x00 through 0x0D.'''
   border = xlwt.Borders()   #创建borders
   border.left = xlwt.Borders.NO_LINE
   border.right = xlwt.Borders.NO_LINE  #设置右边框的类型为细线
   border.top = xlwt.Borders.NO_LINE   #设置上边框的类型为打点的
   border.bottom = xlwt.Borders.NO_LINE  #设置底部边框类型为粗线
   border.left_colour = leftcolour  #设置左边框线条颜色
   border.right_colour = rightcolour
   border.top_colour = topcolour
   border.bottom_colour = bottomcolour
   return border

style.font = font()  #将创建的font字体格式应用到style上
style.alignment = aligment()   #应用alignment到style上
style.pattern = pattern() #把设置的pattern应用到style上
style.borders = border()
sheet1.write(0,0,'some text',style)
sheet1.write_merge(1,1+2,3,3+2,"sum",style)
f.save('test1.xls')

#write_merge(x, x + h, y, w + y, string, sytle)
#x表示行,y表示列,
# w表示跨列个数,h表示跨行个数,
# string表示要写入的单元格内容,style表示单元格样式。
#注意,x,y,w,h,都是以0开始计算的。

# insert_bitmap(img, x, y, x1, y1, scale_x=0.8, scale_y=1)
# img表示要插入的图像地址,
# x表示行
# y表示列
# x1表示相对原来位置向下偏移的像素
# y1表示相对原来位置向右偏移的像素
# scale_x表示相对原图宽的比例
# scale_y表示相对原图高的比例
#xlwt文档说们了只支持24bit的bmp, XlsxWriter支持多点png,jpeg
#sheet1.insert_bitmap(r"E:\python_sample\libs\dsp.bmp", 5, 6, 5, 5, scale_x=0.8, scale_y=1)

2.读xlrd

import xlrd
excel = xlrd.open_workbook("C:\Users\wang\Desktop\wang.xls") 
#打开文件并将对象存储到excel中
sheet = excel.sheet_by_index(0) #通过索引读取sheet对象,第一个sheet的索引为"0"
sheet=excel.sheet_by_name(u"sheet1")

row_3 = sheet.row_values(2) #读取第3行的所有数据,并以列表的形式存储到row_3中
col_3 = sheet.col_values(2) #读取第3列的所有数据,并以列表list的形式存储到col_3中
cell_12_7 = sheet.cell_value(11,6)   #读取第12行第7列的数据,并存储到cell_12_7中
cell_11_11 = sheet.cell(10,10).value #读取第11行第11列的数据,并存储到cell_11_11中

num_rows = sheet.nrows             #读取sheet的总行数
num_cols = sheet.ncols               #读取sheet的总列数    


print row_3
print col_3
print cell_12_7
print num_rows
print num_cols

3.改xlutils

#-*- coding:utf-8 -*-     #设置当前编码格式为utf-8
import xlwt       #导入xlwt模块
import xlrd       #导入xlrd模块
from xlutils.copy import copy
#导入import模块的copy函数,接下来就可以直接使用函数copy了。

fileName = r"C:\Users\wang\Desktop\36.xls"
sheetName = "sheet1"

styleBoldRed = xlwt.easyxf('font: color-index red, bold on')
#设置字体,颜色为红色,加粗
oldWb = xlrd.open_workbook(fileName, formatting_info=True)
#使用xlrd.open_workbook函数打开文件,formatting_info=True表示保留该文件的格式
newWb = copy(oldWb)
#通过copy函数把oldWb copy到newWb,然后通过编辑newWb来实现编辑已经存在的文件。
newWs = newWb.get_sheet(0)
#读取第一个sheet
newWs.write(4, 0, "value1",styleBoldRed)
#第5行第1列写入值“value1”,格式采用styleBoldRed。
newWs.write(4, 1, "value2",styleBoldRed)
#第5行第2列写入值“value2”
newWs.write(4, 2, "value3",styleBoldRed)
#第5行第3列写入值“value3”
newWb.save(fileName)   #文件保存为"E:\\4.xls"
    原文作者:Godric_wsw
    原文地址: https://www.jianshu.com/p/e7ea6ab1a904
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞