Python操作Excel可以使用xlwt模块(写)和xlrd模块(读),下面进行简单说明。
系列文章
Python 学习 01 —— Python基础
Python 库学习 —— urllib 学习
Python 库学习 —— BeautifulSoup4学习
Python 库学习 —— Re 正则表达式
Python 库学习 —— Excel存储(xlwt、xlrd)
Python 学习 02 —— Python爬虫
Python 库学习 —— Flask 基础学习
一、xlwt模块
1、基本使用
import xlwt
# 1.创建Workbook对象并设置编码(通常是设置为utf-8)
workbook = xlwt.Workbook(encoding="utf-8")
# 2.创建一个worksheet(就是Excel最下面那个选项页)
worksheet = workbook.add_sheet("MySheet")
# 3.写入Excel,write(a, b, c)参数:行,列,值
worksheet.write(0, 0, "Hello Python")
# 4.保存(后缀 xls是2003版Excel,xlsx是2017之后的,可以保存更多内容)
workbook.save("FirstExcel.xlsx")
运行结果:
2、设置样式
import xlwt
workbook = xlwt.Workbook(encoding="utf-8")
worksheet = workbook.add_sheet("MySheet")
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("SecondExcel.xls")
运行结果:
3、其他设置
import xlwt
import datetime
workbook = xlwt.Workbook(encoding="utf-8")
worksheet = workbook.add_sheet("MySheet")
# 设置单元格宽度
worksheet.col(0).width = 3333
# 输入日期到单元格
style = xlwt.XFStyle()
# D-MMM-YY、D-MMM、MMM-YY、h:mm、h:mm:ss、h:mm、h:mm:ss、M/D/YY h:mm、mm:ss
style.num_format_str = 'M/D/YY'
worksheet.write(0, 0, datetime.datetime.now(), style)
# 添加一个公式
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])
# 添加超链接:输出链接到 http://www.google.com 的文本 "Google"
worksheet.write(0, 0, xlwt.Formula('HYPERLINK("http://www.google.com";"Google")'))
# 合并行和列
worksheet.write_merge(0, 0, 0, 3, 'First Merge')
# 设置对齐方式
alignment = xlwt.Alignment()
# 其他选择: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.horz = xlwt.Alignment.HORZ_CENTER
# 其他选择: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER
style = xlwt.XFStyle()
style.alignment = alignment
worksheet.write(0, 0, 'Cell Contents', style)
# 添加边框
borders = xlwt.Borders()
# 选项: DASHED虚线、NO_LINE没有、THIN实线
borders.left = xlwt.Borders.DASHED
borders.right = xlwt.Borders.DASHED
borders.top = xlwt.Borders.DASHED
borders.bottom = xlwt.Borders.DASHED
# 设置边框宽度
borders.left_colour = 0x40
borders.right_colour = 0x40
borders.top_colour = 0x40
borders.bottom_colour = 0x40
style = xlwt.XFStyle()
style.borders = borders
worksheet.write(0, 0, 'Cell Contents', style)
# 设置单元格背景色
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern_fore_colour = 5 # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...
style = xlwt.XFStyle() # Create the Pattern
style.pattern = pattern # Add Pattern to Style
worksheet.write(0, 0, 'Cell Contents', style)
workbook.save("SecondExcel.xls")
二、xlrd模块
1、获取book的工作表
# 如果路径或者文件名有中文,就给前面加一个r字符或者进行转码
data = xlrd.open_workbook(r"FirstExcel.xlsx") # 加r
filename = filename.decode('utf-8') # 转码
table = data.sheets()[0] # 通过索引顺序获取
table = data.sheet_by_index(0)) # 通过索引顺序获取
table = data.sheet_by_name(sheet_name) # 通过名称获取
# 以上三个函数都会返回一个xlrd.sheet.Sheet()对象
names = data.sheet_names() #返回book中所有工作表的名字
data.sheet_loaded(sheet_name or indx) # 检查某个sheet是否导入完毕
2、行操作
nrows = table.nrows #获取该sheet中的有效行数
table.row(rowx) #返回由该行中所有的单元格对象组成的列表
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) #返回单元格中的数据