经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python3 » 查看文章
Python3 读、写Excel文件的操作方法
来源:jb51  时间:2018/10/20 15:38:43  对本文有异议

首先,简单介绍一下EXECL中工作簿和工作表的区别:

工作簿的英文是BOOK(WORKBOOK),工作表的英文是SHEET(WORKSHEET)。

•一个工作簿就是一个独立的文件
•一个工作簿里面可以有1个或者多个工作表
•工作簿是工作表的集合

1:使用python实现对Excel文件的读写,首先需要安装专用的模块(可以自己编写)xlrd,xlwt模块

2:读取excel数据(注意事项:sheet编号,行号,列号都是从索引0开始)

  1. import xlrd
  2. # 设置路径
  3. path = 'E:/input.xlsx'
  4. # 打开execl
  5. workbook = xlrd.open_workbook(path)
  6. # 输出Excel文件中所有sheet的名字
  7. print(workbook.sheet_names())
  8. # 根据sheet索引或者名称获取sheet内容
  9. Data_sheet = workbook.sheets()[0] # 通过索引获取
  10. # Data_sheet = workbook.sheet_by_index(0) # 通过索引获取
  11. # Data_sheet = workbook.sheet_by_name(u'名称') # 通过名称获取
  12. print(Data_sheet.name) # 获取sheet名称
  13. rowNum = Data_sheet.nrows # sheet行数
  14. colNum = Data_sheet.ncols # sheet列数
  15. # 获取所有单元格的内容
  16. list = []
  17. for i in range(rowNum):
  18. rowlist = []
  19. for j in range(colNum):
  20. rowlist.append(Data_sheet.cell_value(i, j))
  21. list.append(rowlist)
  22. # 输出所有单元格的内容
  23. for i in range(rowNum):
  24. for j in range(colNum):
  25. print(list[i][j], '\t\t', end="")
  26. print()
  27. # 获取整行和整列的值(列表)
  28. rows = Data_sheet.row_values(0) # 获取第一行内容
  29. cols = Data_sheet.col_values(1) # 获取第二列内容
  30. # print (rows)
  31. # print (cols)
  32. # 获取单元格内容
  33. cell_A1 = Data_sheet.cell(0, 0).value
  34. cell_B1 = Data_sheet.row(0)[1].value # 使用行索引
  35. cell_C1 = Data_sheet.cell(0, 2).value
  36. cell_D2 = Data_sheet.col(3)[1].value # 使用列索引
  37. print(cell_A1, cell_B1, cell_C1, cell_D2)
  38. # 获取单元格内容的数据类型
  39. # ctype:0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
  40. print('cell(0,0)数据类型:', Data_sheet.cell(0, 0).ctype)
  41. print('cell(1,0)数据类型:', Data_sheet.cell(1, 0).ctype)
  42. print('cell(1,1)数据类型:', Data_sheet.cell(1, 1).ctype)
  43. print('cell(1,2)数据类型:', Data_sheet.cell(1, 2).ctype)
  44. # 获取单元格内容为日期的数据
  45. date_value = xlrd.xldate_as_tuple(Data_sheet.cell_value(1,0),workbook.datemode)
  46. print(type(date_value), date_value)
  47. print('%d:%d:%d' % (date_value[0:3]))

3:创建excel并写入数据

  1. import xlwt
  2. def set_style(name, height, bold=False):
  3. style = xlwt.XFStyle() # 初始化样式
  4. font = xlwt.Font() # 为样式创建字体
  5. font.name = name
  6. font.bold = bold
  7. font.color_index = 4
  8. font.height = height
  9. style.font = font
  10. return style
  11. def write_excel(path):
  12. # 创建工作簿
  13. workbook = xlwt.Workbook(encoding='utf-8')
  14. # 创建sheet
  15. data_sheet = workbook.add_sheet('demo')
  16. row0 = [u'字段名称', u'大致时段', 'CRNTI', 'CELL-ID']
  17. row1 = [u'测试', '15:50:33-15:52:14', 22706, 4190202]
  18. # 生成第一行和第二行
  19. for i in range(len(row0)):
  20. data_sheet.write(0, i, row0[i], set_style('Times New Roman', 220, True))
  21. data_sheet.write(1, i, row1[i], set_style('Times New Roman', 220, True))
  22. # 保存文件
  23. # workbook.save('demo.xls')
  24. workbook.save(path)
  25. if __name__ == '__main__':
  26. # 设置路径
  27. path = 'E:/demo.xls'
  28. write_excel(path)
  29. print(u'创建demo.xls文件成功')

再看一个例子:

转载:Ryan in C++

基本的write函数接口很简单:

•新建一个excel文件:                                                 file = xlwt.Workbook() (注意这里的Workbook首字母是大写)
•新建一个sheet:                                                        table = file.add_sheet('sheet_name')
•写入数据table.write(行,列,value):                            table.write(0,0,'test')
•如果是写入中文,则要用u'汉字'的形式。比如:       table.write(0,0, u'汉字')
•合并单元格:                                                             table.write_merge(x, x + m, y, y + n, string, style)
•x表示行,y表示列,m表示跨行个数,n表示跨列个数,string表示要写入的单元格内容,style表示单元格样式

  1. """
  2. 设置单元格样式
  3. """
  4. import xlwt
  5. def set_style(font_name, font_height, bold=False):
  6. style = xlwt.XFStyle() # 初始化样式
  7. font = xlwt.Font() # 为样式创建字体
  8. font.name = font_name # 'Times New Roman'
  9. font.bold = bold
  10. font.color_index = 4
  11. font.height = font_height
  12. borders = xlwt.Borders()
  13. borders.left = 6
  14. borders.right = 6
  15. borders.top = 6
  16. borders.bottom = 6
  17. style.font = font
  18. style.borders = borders
  19. return style
  20. # 写excel
  21. def write_excel(output_path):
  22. f = xlwt.Workbook() # 创建工作簿
  23. '''
  24. 创建第一个sheet:
  25. sheet1
  26. '''
  27. sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) # 创建sheet
  28. row0 = [u'业务',u'状态',u'北京',u'上海',u'广州',u'深圳',u'状态小计',u'合计']
  29. column0 = [u'机票',u'船票',u'火车票',u'汽车票',u'其它']
  30. status = [u'预订',u'出票',u'退票',u'业务小计']
  31. # 生成第一行
  32. for i in range(0, len(row0)):
  33. sheet1.write(0, i, row0[i], set_style('Times New Roman', 220, True))
  34. # 生成第一列和最后一列(合并4行)
  35. i, j = 1, 0
  36. while i < 4*len(column0) and j < len(column0):
  37. sheet1.write_merge(i, i+3, 0, 0, column0[j], set_style('Arial', 220, True)) # 第一列
  38. sheet1.write_merge(i, i+3, 7, 7) # 最后一列"合计"
  39. i += 4
  40. j += 1
  41. sheet1.write_merge(21,21,0,1,u'合计',set_style('Times New Roman',220,True))
  42. # 生成第二列
  43. i = 0
  44. while i < 4*len(column0):
  45. for j in range(0,len(status)):
  46. sheet1.write(j+i+1, 1, status[j])
  47. i += 4
  48. f.save(output_path)
  49. if __name__ == '__main__':
  50. write_excel('E:/demo.xls') # 保存文件.这里如果是.xlsx的话会打不开。

注意:如果对一个单元格重复操作,会引发error。所以在打开时加cell_overwrite_ok=True解决

  1. table = file.add_sheet('sheet name',cell_overwrite_ok=True)

生成的demo.xls效果如下:

总结

以上所述是小编给大家介绍的Python3 读、写Excel文件的操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对w3xue网站的支持!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号