分类: Python/Ruby
2016-06-09 23:21:23
1. excel文件术语:
workbook: 每个excel文件就是一个workbook
sheet: 对应excel下面的’sheet1’,’sheet2'
cell: 对应每个单元格
2. python读写excel的第三方库
Python-Excel的第三方库(xlrd、xlwt、xlutils)
这种方法其实是由三个库组成:
* xlrd (Excel Reader): 读
支持Python 2.x和3.x,支持XLS和XLSX文件读取。
* xlwt (Excel Writer): 写
仅支持Python 2.x,仅支持写XLS。
但是后来又找到了这个版本的一个支持Python 3.x的fork:xlwt-future,不过还是只支持写XLS。
* xlutils: 更多高级操作,依赖前2个库
仅支持Python 2.x。
openpyxl
支持Python 2.x和3.x,仅支持XLSX的读取和写入。
3. openpyxl 使用
3.1 打开excel
wb = load_workbook(‘file.xlsx)
ws = wb.get_active_sheet(), 获取一个sheet,默认是0
3.2 按索引遍历excel的所有sheet
sheet_names = wb.get_sheet_names()
ws = wb.get_sheet_by_name(sheet_names[index])
3.3 获取对应cell的值
按行号读取:
c= ws.cell(‘A5’).value
d=ws.cell(row=3, column=4).value
4. 创建workbook
wb = Workbook()
5. 创建sheet
wb.create_sheet() #在尾部插入sheet
wb.create_sheet(0) #在首部插入sheet
6. 写入数据到cell
ws.cell(‘A3) = 20
ws.cell(row=3, column=4) = 24.5
7. 保存文件
wb.save(‘file.xlsx')
例子:
import openpyxl
def get_cells(worksheet):
for i in range(100):
lst=[]
for j in range(20):
lst.append(worksheet.cell(row=i+1, column=j+1).value)
print("row %d" % i , lst)
wb=openpyxl.Workbook(optimized_write=True)
ws=wb.create_sheet()
for irow in range(100):
ws.append(['%d' % i for i in range(20)])
wb.save(filename='test.xlsx')
wb = openpyxl.load_workbook('test.xlsx', use_iterators=True)
sheetnames = wb.get_sheet_names()
ws = wb.get_sheet_by_name(sheetnames[0])
get_cells(ws)