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