使用xlsxwriter模块和xlrd模块操作Excel表格
Posted mr-choa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用xlsxwriter模块和xlrd模块操作Excel表格相关的知识,希望对你有一定的参考价值。
1、xlsxwriter模块介绍:主要用来生成excel表格,插入数据、插入图标等表格操作
如下代码:目的是往demo01.xlsx插入数据和图片
# 导入xlsxwriter模块:主要用来修改表格的数据 import xlsxwriter target_xlsx="D:/360Downloads/Software/py/demo01.xlsx" # 创建工作簿 workbook=xlsxwriter.Workbook(target_xlsx) # 创建工作表 worksheet=workbook.add_worksheet() # 设置工作簿的格式 font=workbook.add_format({"font_size": 14}) # 设置工作表的列宽 worksheet.set_column=("A:A",20) # 写值 worksheet.write(0,0,"Hello",font) # 写值 worksheet.write(0,1,"World",font) # 写值 worksheet.write(2,0, "123",font) # 写值 worksheet.write(3, 0, "123.456", font) # 插入一张照片 worksheet.insert_image("B5", "D:/360Downloads/1.jpg") # 关闭工作簿 workbook.close()
结果:
或者如下代码:
# 导入xlsxwriter模块 import xlsxwriter # 目标文件 target_xlsx="D:/360Downloads/test01.xlsx" # 创建工作簿 workbook=xlsxwriter.Workbook(target_xlsx) # 创建名叫person的工作表 worksheet=workbook.add_worksheet("person") # 设置工作簿的格式 font=workbook.add_format({"font_size": 14}) # 设置工作表的列宽 worksheet.set_column=("A:A",20) # 设置表头 headings=["number","name","age"] # 自己造的数据 data=[ [1,2,3], ["Mr_choa","Mr_lai","Mr_z"], [24,14,48] ] # 表头按行写入数据 worksheet.write_row(0,0,headings) #造的数据按列写入数据 worksheet.write_column("A2",data[0]) worksheet.write_column("B2",data[1]) worksheet.write_column(‘C2‘,data[2]) # 关闭文件流,要注意关闭Excel表格,不然报错 workbook.close()
打开test01.xlsx,结果:
运行代码,如果有xlsxwriter.exceptions.FileCreateError: [Errno 13] Permission denied: ‘D:/360Downloads/test01.xlsx‘错误,关闭test01.xlsx表格再运行就不会报错。
在xlsxwriter模块中设置单元格的格式:
无论是
workfomat=workbook.add_format( { # 字体加粗 ‘bold‘:True, # 单元格边框宽度 ‘border‘:1, # 字体对齐方式 ‘align‘:‘center‘, # 单元格背景颜色 ‘fg_color‘:‘#F4B084‘, # 字体大小 ‘font_size‘:14 } )
或是通过创建fomat对象:
# 创建一个workfomat对象 workfomat=workbook.add_format() # 字体加粗 workfomat.set_bold(True) # 设置边框宽度 workfomat.set_border(1) # 对齐方式:中心对齐 workfomat.set_align(‘center‘) # 设置背景颜色 workfomat.fg_color(‘blue‘) # 设置背景颜色 workfomat.bg_color(‘red‘)
2、xlrd模块介绍:xlrd就是读Excel表
如下代码:目的在读取两个源文件的数据,再写入另外一个表格中
# 导入xlrd模块:读取源文件的数据 import xlrd # 导入xlsxwriter模块:修改表格的数据 import xlsxwriter # 源文件 source_xls = ["D:/360Downloads/1.xlsx", "D:/360Downloads/2.xlsx"] # 目标文件 target_xls = "D:/360Downloads/3.xlsx" # 从源文件中读取数据 data = [] for i in source_xls: wb = xlrd.open_workbook(i) for sheet in wb.sheets(): for rownum in range(sheet.nrows): data.append(sheet.row_values(rownum)) print(data) # 创建工作簿写入数据 workbook = xlsxwriter.Workbook(target_xls) # 创建工作表 worksheet = workbook.add_worksheet() # 设置工作簿的格式 font = workbook.add_format({"font_size":14}) # 写入数据,遍历工作表的数据个数 for i in range(len(data)): # 遍历工作表数据的长度 for j in range(len(data[i])): # 写入数据 worksheet.write(i, j, data[i][j], font) # 添加数据 worksheet.write(4,0,"haha",font) # 关闭文件流,要注意关闭Excel表格,不然报错 workbook.close()
源文件1.xlsx:
源文件2.xlsx:
结果得到3.xlsx:
3、在excel中插入折线图
在表格中插入数据,并且插入折线图。
# 导入xlsxwriter模块 import xlsxwriter # 目标文件 target_xlsx="D:/360Downloads/test01.xlsx" # 创建工作簿 workbook=xlsxwriter.Workbook(target_xlsx) # 创建名叫person的工作表 worksheet=workbook.add_worksheet("person") # 设置工作簿的格式 font=workbook.add_format({"font_size": 14}) # 设置工作表的列宽 worksheet.set_column=("A:A",20) # 设置表头 headings=["name","testA","testB"] # 自己造的数据 data=[ ["Mr_choa","Mr_lai","Mr_z",‘Mr_r‘,"Mr_d"], [90,80,70,87,56], [100,50,40,45,68] ] # 表头按行写入数据 worksheet.write_row(0,0,headings) #造的数据按列写入数据 worksheet.write_column("A2",data[0]) worksheet.write_column("B2",data[1]) worksheet.write_column(‘C2‘,data[2]) # 创建折线图 workchart=workbook.add_chart({‘type‘:‘line‘}) # 给图表设置格式 workchart.add_series( { # 折线名称 ‘name‘:‘=person!$B$1‘, ‘categories‘:‘=person!$A$2:$A$6‘, # 折线的值 ‘values‘:‘=person!$B$2:$B$6‘, # 折线颜色 ‘line‘:{‘color‘:‘red‘} } ) workchart.add_series( { # 折线名称 ‘name‘:‘=person!$C$1‘, ‘categories‘:‘=person!$A$2:$A$6‘, # 折线的值 ‘values‘:‘=person!$C$2:$C$6‘, # 折线的颜色 ‘line‘:{‘color‘:‘blue‘} } ) # 设置图表的表头 workchart.set_title({‘name‘:‘测试‘}) workchart.set_x_axis({‘name‘:‘x轴‘}) workchart.set_y_axis({‘name‘:‘y轴‘}) # 设置图表样式类型 workchart.set_style(1) # 设置图表的位置 worksheet.insert_chart(‘A10‘,workchart,{‘x_offset‘:25,‘y_offset‘:10}) # 关闭文件流,要注意关闭Excel表格,不然报错 workbook.close()
结果:
4、图表的type
area:面积图
bar:直方图
column:柱形图
line:折线图
pie:饼图
doughnut:环形图
scatter:散点图
stock:股票趋势图
rader:雷达图
5、表格的一些操作(合并单元格)
#合并单元格
worksheet.merge_range(‘D1:D7‘,‘合并单元格‘)
以上是关于使用xlsxwriter模块和xlrd模块操作Excel表格的主要内容,如果未能解决你的问题,请参考以下文章