之前处理excel的读写时用的是xlrd/xlwt,但是这两个库有个缺点就是只对xls的格式处理的比较好,对以xlsx结尾的格式就不行了。由于现在大家使用的都是最新版本的office,excel的格式都是xlsx,因此此时再继续用xlrd/xlwt处理就不合适了,庆幸的是对于xlsx文件的读写,我们还可以使用openpyxl来操作。
我对excel并不熟悉,平时也不怎么用,所以对excel的处理很简单,只是简单的读写,这里演示的也是简单的读写操作,具体的高级功能,可以参考文后的链接地址。
一:写一个excel文件如下
1 from openpyxl import Workbook
2 from openpyxl.utils import get_column_letter
3
4 # 在内存中创建一个workbook对象,而且会至少创建一个 worksheet
5 wb = Workbook()
6
7 #获取当前活跃的worksheet,默认就是第一个worksheet
8 ws = wb.active
9
10 #设置单元格的值,A1等于6(测试可知openpyxl的行和列编号从1开始计算),B1等于7
11 ws.cell(row=1, column=1).value = 6
12 ws.cell("B1").value = 7
13
14 #从第2行开始,写入9行10列数据,值为对应的列序号A、B、C、D...
15 for row in range(2,11):
16 for col in range (1,11):
17 ws.cell(row=row, column=col).value = get_column_letter(col)
18
19 #可以使用append插入一行数据
20 ws.append(["我","你","她"])
21
22 #保存
23 wb.save(filename="/Users/budong/Desktop/a.xlsx")
二:读刚刚写入的excel内容如下
1 from openpyxl import load_workbook
2
3 #打开一个workbook
4 wb = load_workbook(filename="/Users/budong/Desktop/a.xlsx")
5
6 #获取当前活跃的worksheet,默认就是第一个worksheet
7 #ws = wb.active
8
9 #当然也可以使用下面的方法
10
11 #获取所有表格(worksheet)的名字
12 sheets = wb.get_sheet_names()
13 #第一个表格的名称
14 sheet_first = sheets[0]
15 #获取特定的worksheet
16 ws = wb.get_sheet_by_name(sheet_first)
17
18 #获取表格所有行和列,两者都是可迭代的
19 rows = ws.rows
20 columns = ws.columns
21
22 #迭代所有的行
23 for row in rows:
24 line = [col.value for col in row]
25 print line
26
27 #通过坐标读取值
28 print ws.cell('A1').value # A表示列,1表示行
29 print ws.cell(row=1, column=1).value
参考资料:
python-excel:http://www.python-excel.org
用Python读写Excel文件:http://www.gocalf.com/blog/python-read-write-excel.html
python操作excel表格(xlrd/xlwt):http://www.cnblogs.com/zhoujie/p/python18.html
Python操作excel的几种方式–xlrd、xlwt、openpyxl:http://wenqiang-china.github.io/2016/05/13/python-opetating-excel/
Python读写Excel文件:https://gerald.top/article/32/python-excel
Python中操作Excel 2000的xlsx文件(使用openpyxl):https://www.coder4.com/archives/3991
python读写excel:http://liuliqiang.info/post/112/
Python 读写excel文件:https://segmentfault.com/a/1190000005144821
官方文档openpyxl:https://openpyxl.readthedocs.io/en/default/