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')

 

posted @ 2018-07-02 16:03  虫儿要吃草  阅读(824)  评论(0编辑  收藏  举报