Python自动化之Excel处理
目录
前言
Excel处理模块有三个:xlrd, xlwt和wlsxwriter.其中xlrd是用来读取Excel文件,xlwt与wlsxwriter用来写入Excel文件。(xlwt一般用来处理xls文件,xlsxwriter一般用来处理xlsx文件)
一、xlrd模块
1. 模块的安装
安装指令如下所示,注意需要安装1.2版本的,如果不指定则安装2.0.1版本,该版本无法读取xlsx文件。
pip install xlrd=1.2
2.模块的使用
# 打开Excel文件
wb = xlrd.open_workbook("文件名")
# 获得工作表对象
ws = wb.sheet_by_index(0) # 按工作表序号选取第1个表
# ws = wb.sheet_by_name('Sheet1') # 按工作表名称选择名为Sheet1的表
# 工作表行数
ws_row_num = ws.nrows
# 获取工作表第一行的内容
row1 = ws.row(0) # 返回的是一个列表,列表内的元素是对象,对象包含了单元格的信息
# 如果要想知道第一行第一列的单元格的值 value0 = row1[0].value (对象调用value属性)
row1 = ws.row_values(0) # 直接工作表第一行的内容(没有格式等其他信息,不是对象)
# 得到单元格的长度
ws.row_len(0)
# 获取行内元素的类型
ws.row_types(0)
二、xlwt模块
1.模块的安装
pip install xlwt
2.模块的使用
# 创建工作簿对象
wb = xlwt.Workbook()
# 创建工作表
ws = wb.add_sheet('Sheet1')
# 写入数据
ws.write(i, j, '数据') # i为行数,j为列数,'数据'后还能加入样式
# 合并写入
ws.write_merge(0, 1, 0, 5, "内容") # 合并1-2行,1-6列,写入“内容”,同样可以加入样式
# 保存(此时才会执行写入)
wb.save("test.xls")
#####################上面是基本结构,下面是样式部分######################
# 设计工作表里title的样式
title_style = xlwt.XFStyle()
# 设置字体样式
title_font = xlwt.Font()
title_font.name = "宋体"
title_font.bold = True
title_font.height = 12 * 20
title_font.colour_index = 0x08
title_style.font = title_font
# 设置对齐
title_align = xlwt.Alignment()
# 居中对齐
title_align.horz = 0x02
title_align.vert = 0x01
title_style.alignment = title_align
# 设置边框
title_border = xlwt.Borders()
title_border.left = 0x02
title_border.right = 0x02
title_border.top = 0x02
title_border.bottom = 0x02
title_style.borders = title_border
# 设计工作表里data的样式
data_style = xlwt.XFStyle()
# 水平居中
data_align = xlwt.Alignment()
data_align.vert = 0x02
data_align.horz = 0x01
data_style.alignment = data_align
# 背景颜色
bgcolor = xlwt.Pattern()
bgcolor.pattern = xlwt.Pattern.SOLID_PATTERN
bgcolor.pattern_fore_colour = 0x16
data_style.pattern = bgcolor
# 边框
data_border = xlwt.Borders()
data_border.left = 0x02
data_border.right = 0x02
data_border.top = 0x02
data_border.bottom = 0x02
data_style.borders = data_border
# 样式写完后,在结构写入中加上即可,如:
ws.write(0, 0, '数据',title) # 在第一行第一列处写入,格式是title对应的格式
三、xlsxwriter模块
1.模块的安装
python的基础库,不用安装
2.模块的使用
# 创建工作簿对象,设置保存路径
wb = xlsxwriter.Workbook("./test.xlsx")
# 创建工作表对象
ws = wb.add_worksheet("Sheet1")
# 写入数据
ws.write(0, 0, "数据") # 在第1行第一列写入“数据”
ws.write_column(1,0, [1, 1, 1]) # 在二行第一列开始按列写入1,1,1
ws.write_row(1,1,[1, 1, 1]) # 在第二行第二列开始按行写入1,1,1
# 保存,这行是真正执行的行
wb.close()
#########################基本结构如上,以下是设置格式与生成图标##########################
# 格式
style = wb.add_format({
"fg_color": "yellow", # 单元格的背景颜色
"bold": 1, # 字体加粗
"align": "center", # 对齐方式
"valign": "vcenter", # 字体对齐方式
"font_color": "red" # 字体颜色
})
# 添加格式的方式和xlwt相似
ws.write(0,0,"数据",style) # 在第1行第一列写入“数据”,格式为style对应的格式
# 调用公式
ws.write(row, col, '=SUM(B6:D6)') # 在第row+1行,第col+1列写入B6到D6和求和的结果
###########################################################
# 插入Excel图表
# 生成图表对象
chart = wb.add_chart({"type": "column"})
# column 柱状图
# area面积图
# bar 条形图
# line折现图
# radar雷达图
# 添加数据
chart.add_series(
{"name": "标题", # 标题
"categories": "=Score!$B$1:$D$1", # 统计项名称 工作簿名称+数据
"values": "=Score!$B$2:$D$2", # 统计值 工作簿名称+数据
"line": {"color": "black", "bold": True} # 柱子边颜色
}
)
# 插入图表
worksheet.insert_chart("A11", chart)
总结
介绍了xlwt,xlrd与xlsxwriter模块,其中xlrd用来读excle文档,xlwt用来处理xls文件,wlsxwriter用来处理xlsx文件。wlsxwriter还能用来生成统计图表。