python处理excel

编程爱好者联盟 2017-03-22

编辑Excel

编辑Excel

Table of Contents

  • 1. 因为工作需要,对Excel进行解析,处理,不多,但是也费时间,还容易出错
  • 2. 选择包,可选的包 有xlrd,xlwt,openpyxl;但是xlrd和xlwt在官方文档上写的不支持最新的Excel,所以选用了openpyxl.更多的内容可以自行查看并选择一个适合你的:
  • 3. 安装包 openpyxl
  • 4. 要处理Excel文件,有三个需要处理的内容(读取): 4.1. 文件本身 4.1.1. excel = openpyxl.loadwoekbook('文件名') 该方法返回openpyxl.workbook.workbook.Workbook类对象当文件不存在时抛出异常,表明文件不存在
4.2. sheet页 openpyxl.worksheet.worksheet.Worksheet
  • 4.2.1. 获取所有sheet页的名字 sheetNames = excel.getsheetnames() 或 excel.sheetnames
  • 4.2.2. sheet = excel.getsheetbyname('sheet1') 获取sheet1页的sheet页对象
  • 4.2.3. sheet = excel.getactivesheet() 或者 sheet = excel.active 获取当前活动的页面,Excel第一次被打开时活动页面为sheet1
  • 4.2.4. title sheet.title sheet页的名称 (读写)
4.3. cell单元格 openpyxl.cell.cell.Cell
  • 4.3.1. 获取单元格
4.4. 创建新的sheet
  • 4.4.1. excel.createsheet('sheetname')
  • 4.4.2. excel.createsheet('sheetname',index)
4.5. 写cell 内容直接在获取到时直接设置即可 4.6. 其他方法
  • 4.6.1. excel.copyworksheet(sourcesheet) 复制一个sheet页
5. 更多关于openpyxl的内容请看:

1 因为工作需要,对Excel进行解析,处理,不多,但是也费时间,还容易出错

2 选择包,可选的包 有xlrd,xlwt,openpyxl;但是xlrd和xlwt在官方文档上写的不支持最新的Excel,所以选用了openpyxl.更多的内容可以自行查看并选择一个适合你的: http://www.python-excel.org/

3 安装包 openpyxl

pip3 install openpyxl

import openpyxl

4 要处理Excel文件,有三个需要处理的内容(读取):

4.1 文件本身

4.1.1 excel = openpyxl.loadwoekbook('文件名') 该方法返回openpyxl.workbook.workbook.Workbook类对象当文件不存在时抛出异常,表明文件不存在

4.2 sheet页 openpyxl.worksheet.worksheet.Worksheet

4.2.1 获取所有sheet页的名字 sheetNames = excel.getsheetnames() 或 excel.sheetnames

4.2.2 sheet = excel.getsheetbyname('sheet1') 获取sheet1页的sheet页对象

4.2.3 sheet = excel.getactivesheet() 或者 sheet = excel.active 获取当前活动的页面,Excel第一次被打开时活动页面为sheet1

4.2.4 title sheet.title sheet页的名称 (读写)

4.3 cell单元格 openpyxl.cell.cell.Cell

4.3.1 获取单元格

cellA1 = sheet['A1'] # a的大小写不限定,但最好大写吧,和Excel保持一致

当'A0'时,取全部值

cellrc = sheet.cell(row=10,column=10) 获取10行10列的值 cell(row,column,value=10) 将指定位置的值设置为value

for i in range(1,6): for j in range(1,5): print(sheet.cell(row=i, column=j) 输出前5行4列的单元格对象

cellxx = sheet['A1':'B14'] 获取A1到B14的区域 cellrow = sheet['c'] sheet['c:d'] 获取c/c和d的前10行(默认为10行) cellcol = sheet[ 10 ] 获取第10行的A~J单元格 cellcol2 = sheet[10:11] 获取第10,11行的A~J单元格 maxcol = sheet.maxcolumn 获取该sheet页有数值的最大列 maxrow = sheet.maxrow 获取该sheet页有数值的最大行 for i in sheet.columns: 一列列地返回所有单元格对象

print(i)

columns返回一个全部有数值行的迭代器,迭代器的值类型为元组,当有几列有值,就返回几个元组 for i in sheet.columns: for j in i: print(j.value)

这样才能得到单元格的值

list(sheet.columns)#=> [('A1','A2','A3'),('B1','B2',),..]

sheet.rows 一行行地返回所有单元格对象

list(sheet.rows) #=> [('A1','B1'),('A2','B2')…]

values 一行行地返回所有单元格的值

list(sheet.values) #=> [('A1','B1'),('A2','B2','C2'),….]

4.4 创建新的sheet

4.4.1 excel.createsheet('sheetname')

写入新的sheet页,放在最后面

4.4.2 excel.createsheet('sheetname',index)

在index位置插入新的sheet页

4.5 写cell 内容直接在获取到时直接设置即可

4.6 其他方法

4.6.1 excel.copyworksheet(sourcesheet) 复制一个sheet页

5 更多关于openpyxl的内容请看: https://openpyxl.readthedocs.io/en/default/tutorial.html

Author: vz liū

Created: 2017-03-22 Wed 20:48

Emacs 25.1.1 (Org mode 8.2.10)

Validate

相关推荐