Python xlrd xlwt xlutils玩转Excel读写修改示例演示
在exce l中使用xlrd
首先需要在命令行中运行pip install xlrd;读取xls文件的流程如下:
加载文件->选择哪个表->先按行后列的顺序读取
一般介绍
import xlrd filename = "test.xls" #文件路径 wb = xlrd.open_workbook(filename) #加载这个xls文件 sh = wb.sheet_by_index(0) #选中第1个表格 rows = sh.nrows #rows为该表格的行数 for i in range(1,rows): #从第二行开始按行读取 title = sh.cell(i,0).value #取第i+1行,第1列的数据
DIY功能
根据列名获取内容的函数 def get_col_index(name,workbook,sheet): for i in range(sheet.ncols): name2 = sheet.cell(0,i).value print(name2) if name2 == name: return i return -1 sheet.cell(1,get_col_index("创建时间")).value
再展开一点:
sh = wb.sheet_by_name(sheetname) #通过表格名称选中表格 print(wb.sheet_names()) #打印该xls文件的所有表格名称 sh.row(i) #获得第i+1行的所有数据组成的list ncols = sh.ncols #获得该表格的所有列数 sh.row_values(rowx, start_colx=0, end_colx=None) #获取第rowx+1行的某几列的数据并组成的list sh.col(colx, start_rowx=0, end_rowx=None) #获取第colx+1列的某几行的数据并组成的list sh.cell(i,j).value #获取第i+1行第j+1列的数据 sh.cell(i,j).ctype #获取第i+1行第j+1列的数据类型
注意日期类型
在讲数据类型的时候,我们还要补充一点,xlrd读取记录xls文件单元格的数据类型有五种。数字和类型的正确关系如下:
ctype: 0 空,1 字符串,2 数字,3 日期,4 布尔值,5 错误
对于单元格 如果值为日期类型,则未处理的输出为一个浮点数。然后需要定义ctype并进行转换:
from xlrd import xldate_as_tuple cell = sh.cell(i,10).ctype if cell.ctype == 3: date = datetime(*xldate_as_tuple(cell.value, 0))
使用xlwt,输入exce
首先需要在命令行中输入pip install xlwt;编写xls文件流程如下:
加载文件->选择哪个表->按行先列的顺序读取
总体介绍
import xlwt file = xlwt.Workbook() #新建个文件 sheet = file.add_sheet('test_sheet0',cell_overwrite_ok=True) #新建个表格,指定表名以及是否可覆盖写 sheet.write(i,j,value) #在第i+1行和第j+1列写value(i、j从0开始) file.save("test_xls.xls") #保存成xls文件并指定文件名
附加功能
#设置某列的宽度 sheet.col(0).width = 200 #写日期 style = xlwt.XFStyle() style.num_format_str = 'D-MMM-YY' worksheet.write(0, 0, datetime.datetime.now(), style) #写公式 sheet.write(1, 1, xlwt.Formula('SUM(A1,B1)')) #合并单元格的写 sheet.write_merge(0, 0, 0, 3, 'First Merge') #ps: #write_merge(x, x + h, y, w + y, value, sytle) x和y表示当前行列,h和w为要合并的行数和列数
酷一点❀写作,为什么不让我们获得一些风格: 使用 xlutils 修改 exce l。然后使用 xlwt 对象 exce l demostyle = xlwt.XFStyle()
#修改字体:
font = xlwt.Font() #为样式创建字体
font.name = 'Times New Roman' #字体名称
font.bold = True #黑体
font.colour_index = 2 #修改字的颜色
font.underline = True #下划线
style.font = font #使用到样式中
sheet.write(0,1,"编号",style)
#修改单元格背景色
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 5 #色号,可以在源代码中看到色号和颜色的对应关系
style = xlwt.XFStyle()
style.pattern = pattern
sheet.write(0,2,"编号",style)
import xlrd
import pymysql
from xlrd import open_workbook
from xlutils.copy import copy
import xlwt
file_name = "test_update.xls"
workbook = xlrd.open_workbook(file_name)
sheet = wb.sheet_by_index(0)
workbook_update = copy(workbook)
sheet_update = workbook_update.get_sheet(0)
sheet_update.write(i,j,value)
workbook_update.save(file_name)
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。