python对excel读写主要有xlrd、xlwt 、xlutils、openpyxl、xlsxwriter这几个模块
一 xlrd主要用来读取excel文件
DESCRIPTION
# Copyright (c) 2005-2012 Stephen John Machin, Lingfo Pty Ltd
# This module is part of the xlrd package, which is released under a
# BSD-style licence.PACKAGE CONTENTS
biffh
book
compdoc
formatting
formula
info
sheet
timemachine
xldate
xlsx
1.常用单元格中的数据类型
0 empty,1 string,2 number,3 date,4 boolean,5 error,6 blank
2.导入模块
import xlrd
3.打开excel文件读取数据
workbook=xlrd.open_workbook('test.xlsx')
4.常用函数
1)获取book中的一个工作表
table1=workbook.sheets()[0]#通过索引顺序获取
table2=workbook.sheet_by_index(0)#通过索引顺序获取
table3=workbook.sheet_by_name('Sheet1')#通过名称获取
names=workbook.sheet_names()#返回book中所有工作表的名称
workbook.sheet_loaded(sheet_name or index)#检查某个sheet是否导入完毕
2)行的操作
nrows=table1.nrows#获取改sheet中的有效行数
list_row=table.row(1)#获得该行中所有单元格对象组成的列表
table.row_slice(rowx)#返回由该列所有单元格对象组成的列表
table.row_types(rowx, start_colx=0, end_colx=None) #返回由该行中所有单元格的数据类型组成的列表
table.row_values(rowx, start_colx=0, end_colx=None) #返回由该行中所有单元格的数据组成的列表
table.row_len(rowx) #返回该列的有效单元格长度
3)列的操作
ncols = table.ncols #获取列表的有效列数
table.col(colx, start_rowx=0, end_rowx=None) #返回由该列中所有的单元格对象组成的列表
table.col_slice(colx, start_rowx=0, end_rowx=None) #返回由该列中所有的单元格对象组成的列表
table.col_types(colx, start_rowx=0, end_rowx=None) #返回由该列中所有单元格的数据类型组成的列表
table.col_values(colx, start_rowx=0, end_rowx=None) #返回由该列中所有单元格的数据组成的列表
4)单元格的操作
table.cell(rowx,colx) #返回单元格对象
table.cell_type(rowx,colx) #返回单元格中的数据类型
table.cell_value(rowx,colx) #返回单元格中的数据
table.cell_xf_index(rowx, colx) # 暂时还没有搞懂
5.问题
♦1、使用open()函数、xlrd.open_workbook()函数打开文件,文件名若包含中文,会报错找不到这个文件或目录。
♦2、获取sheet时若包含中文,也会报错。
#打开文件
file = open(filename,'rb')
#打开excel文件
workbook = xlrd.open_workbook(filename)
#获取sheet
sheet = workbook.sheet_by_name(sheetname)
解决方案:
♦对参数进行转码即可。如:
filename = filename.decode('utf-8')
6.示列:
import xlrd
workbook = xlrd.open_workbook(u'test.xls')
sheet_names= workbook.sheet_names()
for sheet_name in sheet_names:
sheet2 = workbook.sheet_by_name(sheet_name)
print sheet_name rows = sheet2.row_values(3) # 获取第四行内容
cols = sheet2.col_values(1) # 获取第二列内容
print rows
print cols
二 xlwt主要是用来写excel文件
PACKAGE CONTENTS
BIFFRecords
Bitmap
Cell
Column
CompoundDoc
ExcelFormula
ExcelFormulaLexer
ExcelFormulaParser
ExcelMagic
Formatting
Row
Style
UnicodeUtils
Utils
Workbook
Worksheet
antlr
compat
1.导入xlwt模块
import xlwt
2.新建
file=xlwt.Workbook()#新建一个excel文件
table=file.add_sheet('sheet1')#新建一个sheet
table.write(0,0,'test')#写入数据table.write(行,列,value)
3.保存
file.save('new.xlsx')#保存文件
4.表格样式
style=xlwt.XFStyle()#创建初始化样式
font=xlwt.Font()#为样式创建字体
font.name='Times New Roman'
font.bold=True
style.font=font#为样式设置字体
table.write(0,0,'some bold Times text',style)#使用样式
5.实例
import xlwt
workbook = xlwt.Workbook(encoding = 'ascii')
worksheet = workbook.add_sheet('My Worksheet')
style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = 'Times New Roman'
font.bold = True # 黑体
font.underline = True # 下划线
font.italic = True # 斜体字
style.font = font # 设定样式
worksheet.write(0, 0, 'Unformatted value') # 不带样式的写入
worksheet.write(1, 0, 'Formatted value', style) # 带样式的写入
workbook.save('D://formatting.xls') # 保存文件
设置单元格宽
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0,'My Cell Contents')
# 设置单元格宽度
worksheet.col(0).width = 3333
workbook.save('cell_width.xls')
输入一个日期到单元格:
import xlwt
import datetime
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
style = xlwt.XFStyle()
style.num_format_str = 'M/D/YY' # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
worksheet.write(0, 0, datetime.datetime.now(), style)
workbook.save('Excel_Workbook.xls')
向单元格添加一个公式:
import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('My Sheet')
worksheet.write(0, 0, 5) # Outputs 5
worksheet.write(0, 1, 2) # Outputs 2
worksheet.write(1, 0, xlwt.Formula('A1*B1')) # Should output "10" (A1[5] * A2[2])
worksheet.write(1, 1, xlwt.Formula('SUM(A1,B1)')) # Should output "7" (A1[5] + A2[2])
workbook.save('Excel_Workbook.xls')