27 python操作excel模块(xlrd、xlwt、xlutils)
1 导入 2 import xlrd 3 打开excel 4 data = xlrd.open_workbook('demo.xls') #注意这里的workbook首字母是小写 5 查看文件中包含sheet的名称 6 data.sheet_names() 7 得到第一个工作表,或者通过索引顺序 或 工作表名称 8 table = data.sheets()[0] 9 table = data.sheet_by_index(0) 10 table = data.sheet_by_name(u'Sheet1') 11 获取行数和列数 12 nrows = table.nrows 13 ncols = table.ncols 14 获取整行和整列的值(数组) 15 table.row_values(i) 16 table.col_values(i) 17 循环行,得到索引的列表 18 for rownum in range(table.nrows): 19 print table.row_values(rownum) 20 21 22 单元格 23 cell_A1 = table.cell(0,0).value 24 cell_C4 = table.cell(2,3).value 25 26 分别使用行列索引 27 cell_A1 = table.row(0)[0].value 28 cell_A2 = table.col(1)[0].value 29 ##以上两种方式访问单元格,如果没有.value 则返回的为cell类的对象 30 31 简单的写入 32 row = 0 33 col = 0 34 ctype = 1 # 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error 35 value = 'lixiaoluo' 36 xf = 0 # 扩展的格式化 (默认是0) 37 table.put_cell(row, col, ctype, value, xf) 38 t 39 40 ########################################### 41 导入xlwt 42 43 import xlwt 44 45 新建一个excel文件 46 47 file = xlwt.Workbook("1.xls") #注意这里的Workbook首字母是大写,无语吧 48 49 新建一个sheet 50 51 table = file.add_sheet('sheet name') 52 53 写入数据table.write(行,列,value) 54 table.write(0,0,'test') 55 56 如果对一个单元格重复操作,会引发 57 returns error: 58 # Exception: Attempt to overwrite cell: 59 # sheetname=u'sheet 1' rowx=0 colx=0 60 所以在打开时加cell_overwrite_ok=True解决 61 62 table = file.add_sheet('sheet name',cell_overwrite_ok=True) 63 64 保存文件 65 file.save('demo.xls') 66 67 另外,使用style 68 style = xlwt.XFStyle() #初始化样式 69 font = xlwt.Font() #为样式创建字体 70 font.name = 'Times New Roman' 71 font.bold = True 72 style.font = font #为样式设置字体 73 table.write(0, 0, 'some bold Times text', style) # 使用样式 74 75 xlwt 允许单元格或者整行地设置格式。还可以添加链接以及公式。可以阅读源代码,那里有例子: 76 dates.py, 展示如何设置不同的数据格式 77 hyperlinks.py, 展示如何创建超链接 (hint: you need to use a formula) 78 merged.py, 展示如何合并格子 79 row_styles.py, 展示如何应用Style到整行格子中. 80 81 ########################################## 82 83 84 3.linux下保存用中文名保存正常,windos下坑爹乱码问题 85 file.save('世界你好')#linux正常,win乱码 86 87 file.save(u'世界你好'.encode('GBK'))# win正常 88 89 ###############################################3333 90 # coding=GB2312 //保证在windows下可以正常打开中文命名的文件 91 import xlutils 92 from xlutils.copy import copy //必须使用此种方法,不能只有import xlutils 否则copy函数会无法使用 93 94 ##使用此模板其实就是, 95 xlutils.copy() 方法作用: 96 //将xlrd.open_workbook()生成的xlrd.book.BOOK类对象 转化成 xlwt.Workbook.Wookbook类的对象 97 //方便对一个已经存在EXCEL进行写操作 ,其实就是复制了一份BOOK 98 99 ws = wb.get_sheet(0) // 使用此方法获取的sheet对象具有write()的方法 100 ws.write(0, 0, 'changed!') //写操作 101 wb.save('1.xls') //保存操作 102 ####注意: 103 在对同一个旧文件进行读写操作时,如果读操作依赖于写操作后的数据, 104 那么必须读操作时,必须在写操作保存之后save("xxx") ,重新打开open_workbook("xxx") 105 106 107 ##例子: 108 import xlrd 109 import xlwt 110 import xlutils 111 from xlutils.copy import copy 112 113 workbook=xlrd.open_workbook("OCS平账表201611.xls") //打开原数据的EXCEL 114 print (type(workbook)) 115 table=workbook.sheets()[0] 116 value=table.cell(39,0).value 117 118 119 workbook2=xlrd.open_workbook("OCS平衡表201611.xls") //写入到另一个EXCEL中 120 print (type(workbook2)) 121 workbooks=copy(workbook2) 122 print (type(workbooks)) 123 table2 = workbooks.get_sheet(0) 124 table2.write(0, 0, value) 125 workbooks.save('2.xls')