这里需要你的电脑里有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的一些英文表达:
特别的wps版本比较低时注意:
import xlrd
wb = xlrd.open_workbook('/tmp/Book1.xls') #导入Book1.xls内容,注意xls为2007一下版本,以上版本后缀为xlsx,除了这个导入操作不一样外其余都和xlsx一样
print(wb.sheet_names()) # 打印包含的工作表名
在导入 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 属性
wb = openpyxl.load_workbook('/tmp/Book1.xlsx')
print(wb.sheetnames)
print(wb.active)
sheet = wb['成绩表']
print(sheet['B3'])
cell = sheet['B3'] #第一种方法
cell = sheet.cell(row=3, column=2) #第二种方法
print(cell.value)
cell = sheet.cell(row=3, column=2)
cell.value = 2222 #把3行2列的内容改为2222
cell = sheet.cell(row=3, column=2)
cell.value = 2222
wb.save('/tmp/Book1.xlsx')
print(sheet.max_column)
print(sheet.max_row)
print(sheet.title)
sheet.title = "修改的成绩表"
wb.save('/tmp/Book1.xlsx') #记得保存
print(sheet.rows) #如果直接打印rows, 返回的是一个生成器
# 用for循环遍历历每一行
for row in sheet.rows:
# 获取每一行, 每个单元格的数据
for cell in row:
print(cell.value, end='\t')
print('\n')