当前位置:   article > 正文

Python玩转Excel的读写改实例_phython修改excel实例

phython修改excel实例

摘要:

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

利用xlrd读取excel

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

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

通用demo

  1. '''
  2. 想要学习Python?Python学习交流群:1004391443满足你的需求,资料都已经上传群文件,可以自行下载!
  3. '''
  4. import xlrd
  5. filename = "test.xls" #文件路径
  6. wb = xlrd.open_workbook(filename) #加载这个xls文件
  7. sh = wb.sheet_by_index(0) #选中第1个表格
  8. rows = sh.nrows #rows为该表格的行数
  9. for i in range(1,rows): #从第二行开始按行读取
  10. title = sh.cell(i,0).value #取第i+1行,第1列的数据

diy功能

  1. 根据列名获取内容的函数
  2. def get_col_index(name,workbook,sheet):
  3. for i in range(sheet.ncols):
  4. name2 = sheet.cell(0,i).value
  5. print(name2)
  6. if name2 == name:
  7. return i
  8. return -1
  9. sheet.cell(1,get_col_index("创建时间")).value

再拓展一点:

  1. sh = wb.sheet_by_name(sheetname) #通过表格名称选中表格
  2. print(wb.sheet_names()) #打印该xls文件的所有表格名称
  3. sh.row(i) #获得第i+1行的所有数据组成的list
  4. ncols = sh.ncols #获得该表格的所有列数
  5. sh.row_values(rowx, start_colx=0, end_colx=None) #获取第rowx+1行的某几列的数据并组成的list
  6. sh.col(colx, start_rowx=0, end_rowx=None) #获取第colx+1列的某几行的数据并组成的list
  7. sh.cell(i,j).value #获取第i+1行第j+1列的数据
  8. 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并进行一次转换:

  1. from xlrd import xldate_as_tuple
  2. cell = sh.cell(i,10).ctype
  3. if cell.ctype == 3:
  4. date = datetime(*xldate_as_tuple(cell.value, 0))

利用xlwt写exce

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

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

通用demo

  1. import xlwt
  2. file = xlwt.Workbook() #新建个文件
  3. sheet = file.add_sheet('test_sheet0',cell_overwrite_ok=True) #新建个表格,指定表名以及是否可覆盖写
  4. sheet.write(i,j,value) #在第i+1行和第j+1列写value(i、j从0开始)
  5. file.save("test_xls.xls") #保存成xls文件并指定文件名

更多功能

  1. #设置某列的宽度
  2. sheet.col(0).width = 200
  3. #写日期
  4. style = xlwt.XFStyle()
  5. style.num_format_str = 'D-MMM-YY'
  6. worksheet.write(0, 0, datetime.datetime.now(), style)
  7. #写公式
  8. sheet.write(1, 1, xlwt.Formula('SUM(A1,B1)'))
  9. #合并单元格的写
  10. sheet.write_merge(0, 0, 0, 3, 'First Merge')
  11. #ps:
  12. #write_merge(x, x + h, y, w + y, value, sytle) x和y表示当前行列,h和w为要合并的行数和列数

更炫酷一点

既然是写,何不来点style:

  1. style = xlwt.XFStyle()
  2. #修改字体:
  3. font = xlwt.Font() #为样式创建字体
  4. font.name = 'Times New Roman' #字体名称
  5. font.bold = True #黑体
  6. font.colour_index = 2 #修改字的颜色
  7. font.underline = True #下划线
  8. style.font = font #使用到样式中
  9. sheet.write(0,1,"编号",style)
  10. #修改单元格背景色
  11. pattern = xlwt.Pattern()
  12. pattern.pattern = xlwt.Pattern.SOLID_PATTERN
  13. pattern.pattern_fore_colour = 5 #色号,可以在源代码中看到色号和颜色的对应关系
  14. style = xlwt.XFStyle()
  15. style.pattern = pattern
  16. sheet.write(0,2,"编号",style)

利用xlutils修改excel

修改excel文件的流程为:

将xlrd加载的xls文件(xlrd对象)复制为xlwt对象,然后用xlwt对象操作excel

demo

  1. import xlrd
  2. import pymysql
  3. from xlrd import open_workbook
  4. from xlutils.copy import copy
  5. import xlwt
  6. file_name = "test_update.xls"
  7. workbook = xlrd.open_workbook(file_name)
  8. sheet = wb.sheet_by_index(0)
  9. workbook_update = copy(workbook)
  10. sheet_update = workbook_update.get_sheet(0)
  11. sheet_update.write(i,j,value)
  12. workbook_update.save(file_name)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/931334
推荐阅读
相关标签
  

闽ICP备14008679号