这里需要你的电脑里有linux,我上传了wps在网盘里,你也可以在官网下载,yum install 自行安装即可。2016wps
还需要下载openpyxl,因为我有conda虚拟环境,所以我在虚拟环境里pip install openxl。大家根据自己需要安装到自己所用的python版本中。
Excel 是 Windows 环境下流行的、强大的电子表格应用。openpyxl 模块让 Python 程序能读取和修改 Excel电子表格文件。例如,可能有一个无聊的任务,需要从一个电子表格拷贝一些数据,粘贴到另一个电子表格中。或者可能需要从几千行中挑选几行,根据某种条件稍作修改。或者需要查看几百份部门预算电子表格,寻找其中的赤字。正是这种无聊无脑的电子表格任务,可以通过 Python 来完成。LibreOffice Calc, WPS 和 OpenOffice Calc 都能处理 Excel 的电子表格文件格式,这意味着 openpyxl 模块也能处理来自这些应用程序的电子表格。你可以从https://www.libreoffice.org/和 http://www.openoffice.org/下载这些软件。即使你的计算机上已经安装了 Excel,可能也会发现这些程序更容易使用。
先熟悉一下openxl中的excel的一些英文表达:
1. Excel的基本定义
- 工作薄(workbook):一个Excel电子表格;
- 工作表(sheet): 每个工作薄里面包含的表, 默认有3个;
- 活动表(active sheet): 用户当前查看的工作表;
- 单元格(cell): 特定的行和列构成的格子;
- 列(column): 列地址是从A开始的;
- 行(row):行地址是从1开始的;
特别的wps版本比较低时注意:
2注意. 版本 < 2007使用xlrd模块实现
import xlrd
wb = xlrd.open_workbook('/tmp/Book1.xls') #导入Book1.xls内容,注意xls为2007一下版本,以上版本后缀为xlsx,除了这个导入操作不一样外其余都和xlsx一样
print(wb.sheet_names()) # 打印包含的工作表名
3.读取 Excel 文档(.xlsx)
我在/tmp下保存了名为Book1的excel文档
在导入 openpyxl 模块后,就可以使用 openpyxl.load_workbook()函数。打开 Excel 文档
导入工作薄
1. wb = openpyxl.load_workbook('excelDemo/example.xlsx')
# 加载工作薄
2. wb.sheetnames
# 获取当前所有工作表的名称, 返回一个列表
3. wb.active
# 获取当前活跃的工作表
从工作簿中取得工作表
4. sheet = wb['Sheet1'] # 工作表
5. sheet.title # 获取当前活动表的名称
6. sheet.cell(row=1, column=2) # 获取单元格指定行和指定列的内容
表中取得单元格
Cell 对象有一个 value 属性,不出意外,它包含这个单元格中保存的值。Cell 对象也有 row、column 和
coordinate 属性,提供该单元格的位置信息。
row属性给出的是整数 1,column 属性给出的是'B',coordinate 属性给出的是'B1'。
6. cell = sheet['A1']
7. cell_value = sheet['A1'].value
8. cell.row, cell.column ,cell.coordinate
下面是从电子表格文件中读取单元格涉及的所有函数、方法和数据类型。一个完整的操作过程如下:
1导入 openpyxl 模块。
2调用 openpyxl.load_workbook()函数。
3取得 Workbook 对象。
4调用 wb.sheetnames和 wb.active 获取工作簿详细信息。
5取得 Worksheet 对象。
6使用索引或工作表的 cell()方法,带上 row 和 column 关键字参数。
7取得 Cell 对象。
8读取 Cell 对象的 value 属性
1. 导入工作薄
wb = openpyxl.load_workbook('/tmp/Book1.xlsx')
2. 查看包含的工作表
print(wb.sheetnames)
3. 查看当前活动表
print(wb.active)
4. 从工作薄中选择要操作的工作表
sheet = wb['成绩表']
5. 查看制定单元格的数据
print(sheet['B3'])
6. 获取单元格详细信息
cell = sheet['B3'] #第一种方法
cell = sheet.cell(row=3, column=2) #第二种方法
print(cell.value)
7. 修改单元格信息
cell = sheet.cell(row=3, column=2)
cell.value = 2222 #把3行2列的内容改为2222
8. 保存修改的信息
cell = sheet.cell(row=3, column=2)
cell.value = 2222
wb.save('/tmp/Book1.xlsx')
查看一下Book1.xlsx有没有改变
9. 获取工作表的总行和总列数
print(sheet.max_column)
print(sheet.max_row)
10. 修改单元表的名称
print(sheet.title)
sheet.title = "修改的成绩表"
wb.save('/tmp/Book1.xlsx') #记得保存
重新打开Book1查看当前工作表的名字被修改成修改的成绩表
11. 遍历历EXCEL表格的所有数据;
print(sheet.rows) #如果直接打印rows, 返回的是一个生成器
# 用for循环遍历历每一行
for row in sheet.rows:
# 获取每一行, 每个单元格的数据
for cell in row:
print(cell.value, end='\t')
print('\n')