Linux下用python处理excel

安装模块部分
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

发表评论

电子邮件地址不会被公开。 必填项已用*标注