首页 > 编程 > Python > 正文

Python玩转Excel的读写改实例

2020-02-16 01:18:51
字体:
来源:转载
供稿:网友

摘要:

利用xlrd读取excel 利用xlwt写excel 利用xlutils修改excel

利用xlrd读取excel

先需要在命令行中pip install xlrd;读取xls文件的流程为:

加载文件->选中第几个表格->按先行后列的顺序读

通用demo

import xlrdfilename = "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 -1sheet.cell(1,get_col_index("创建时间")).value

再拓展一点:

sh = wb.sheet_by_name(sheetname)  #通过表格名称选中表格print(wb.sheet_names())       #打印该xls文件的所有表格名称sh.row(i)              #获得第i+1行的所有数据组成的listncols = sh.ncols          #获得该表格的所有列数sh.row_values(rowx, start_colx=0, end_colx=None)   #获取第rowx+1行的某几列的数据并组成的listsh.col(colx, start_rowx=0, end_rowx=None) #获取第colx+1列的某几行的数据并组成的listsh.cell(i,j).value         #获取第i+1行第j+1列的数据sh.cell(i,j).ctype         #获取第i+1行第j+1列的数据类型

注意date类型

说起数据类型,补充一点,xlrd读取xls文件单元格的数据类型有五种,数字与类型的对应关系为:

ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

当单元格某个值为date类型时,不加处理输出的是一个浮点数,此时需要判断ctype并进行一次转换:

from xlrd import xldate_as_tuplecell = sh.cell(i,10).ctypeif cell.ctype == 3:  date = datetime(*xldate_as_tuple(cell.value, 0))

利用xlwt写exce

先需要在命令行中pip install xlwt;写xls文件的流程为:

加载文件->选中第几个表格->按先行后列的顺序读

通用demo

import xlwtfile = 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为要合并的行数和列数            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表