安装模块部分
pip install xlrd
pip install xlwt
读取常用部分
导入模块
import xlrd
打开Excel文件读取数据
data = xlrd.open_workbook(‘excelFile.xlsx’)
需要修改coding的,普通文件默认即可
data = xlrd.open_workbook(‘excelFile.xlsx’, encoding=’cp1242′)
打印文件sheet数量
data.nsheets
打印文件sheet名字
data.sheet_names()
根据ID获取一个工作表
table = data.sheets()[0]
根据名称获取工作表
table = data.sheet_by_name(u’Sheet2′)
获取整行或整列的值,返回值为数组
table.row_values(i)
table.col_values(i)
获取行数或列数
nrows = table.nrows
ncols = table.ncols
循环行列表数据
for i in range(nrows):
print table.row_values(i)
单元格
cell_A1 = table.cell(0,0).value
cell_C4 = table.cell(2,3).value
使用行列索引
cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value
打印单元格值
print cell_A1.value
数据类型(ctype)
0 empty
1 text
2 number
3 date
4 boolean
5 error
简单写入,xf为扩展
table.put_cell(row, col, ctype, value, xf)
table.put_cell(0,1,1,’test’,0)
写入常用部分
创建文件
from xlwt import Workbook
data = Workbook()
如需修改编码
data = Workbook(encoding=’utf-8′)
添加sheet
sheet = data.add_sheet(‘test sheet’)
写入数据
写法一
sheet.write(0, 0, ‘A1’)
写法二
row = sheet.row(1)
row.write(1, ‘B2′)
写入不同格式的数据
row.write(0, u’\xa3’)
row.write(1, ‘text’)
row.write(2, 3.14159)
row.write(3, 15)
row.write(4, 265L)
row.write(5, Decimal(‘3.65’))
row.write(6, date(214,11,5))
row.write(7, datetime(2014,11,5,17,0,1))
row.write(8, time(17,1))
row.write(9, False)
row.write(10, ”, Style.easyxf(‘pattern:pattern solid, fore_colour green;’))
row.write(11, Formula(“$A$!+SUM(‘testsheet’!$A$!:$B$2)”))
写入数据
sheet.flush_row_data()
保存数据
data.save(‘testExcel.xlsx’)
更多高级功能,比如对齐、链接、增加图片等详见pdf文件
测试脚本
#!/bin/python
#-*- coding:utf-8 -*-
# Filename:
# Revision:
# Date: 2014-11-5
# Author: simonzhang
# web: www.simonzhang.net
# Email: simon-zzm@163.com
### END INIT INFO
import xlrd
from xlwt import Workbook
out_data = xlrd.open_workbook('/root/ab.xlsx')
in_data = Workbook()
# 获取第一张表
out_table = out_data.sheet_by_index(0)
# 获取列数
ncols = out_table.ncols
# 获取行数
nrows = out_table.nrows
# 创建sheet
in_table = in_data.add_sheet('test sheet')
# 循环写入数据(不判断输出格式,某些情况会有问题。比如时间)
for r in range(nrows):
for c in range(ncols):
in_table.write(r,c,out_table.cell(r,c).value)
# 写入文件
in_data.save('ab2.xls')
参考:
http://www.simplistix.co.uk/presentations/python-excel.pdf
http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html