利用python3进行xlsx文件的简单操作
模块:xlsxwriter
环境:centos/Linux
1、创建excel文件
2、创建sheet表
3、开始书写sheet表的正文
先来一串代码压压惊
#############建立xlsx文件并写入数据 图片################ import xlsxwriter workbook = xlsxwriter.Workbook(‘/home/1.xlsx‘) #建立一张1.xlsx表 worksheet = workbook.add_worksheet(‘渗透报告‘) #在1.xlsx表中建立一个名为渗透报告的表 worksheet.set_column(‘A:D‘, 20) #设置A到D的横向宽度为各为20(set_row设置纵向) worksheet.write(‘A1‘,‘Hello‘) #在 A1 表中写入 Hello worksheet.write(‘A2‘,‘World‘) worksheet.write(‘B2‘,‘你好‘) worksheet.write(2,0,32) #在第二行第零列写入数字 32 worksheet.write(3,0,32.2) #在第三行第零列写入数字 32.2 worksheet.write(4,0,‘=SUM(A3:A4)‘) #在第四行第零列写入A3+A4的值 worksheet.insert_image(‘B5‘,‘./baidu.png‘) #在B5中添加图片./baidu.png workbook.close() #关闭1.xlsx表
#xlsxwriter模块的一些操作方法:
#普通操作
xlsxwriter.Workbook(‘excel文件名‘) #创建excel文件
workbook.add_worksheet(‘表名’) #创建sheet表 默认表名为sheet
worksheet.write(‘A1‘,‘Hello‘) #在A1单元格写入‘Hello‘字符串
worksheet.write(2,0,32) #在第二行第零列写入数字32
worksheet.write_row(‘A1‘,title,format) #从A1横向写入title以format格式
#这里title为变量 可以是列表或字母等
worksheet.write_column(‘A2‘,webname,format) #从A2纵向写入webname以format格式
#这里webname为变量 可以是列表或字母等
worksheet.write_formula(‘I‘+cur_row,‘=AVERAGE(B‘+cur_row+‘:H‘+cur_row+‘)‘,format_ave)
#write_formula() 写公式
worksheet.insert_image(‘B5‘,‘./baidu.png‘) #在B5中添加图片baidu.png ./b表示当前文件夹
workbook.close() #关闭文件
#表格操作
workbook.add_format([properties]) #用于创建一个新的格式对象,参数 [properties]为 指定一个格式属性的字典
如:bold = workbook.add_format( { ‘bold‘ : True } )
#同样也可以这样
format = workbook.add_format() #创建自定义格式对象 (格式如下)
format.set_border(1) #设定边界宽度为1
format.set_bg_color(‘#cccccc‘) #设置背景颜色为#ccccccc
format.set_align(‘center‘) #设置对齐方式为 剧中
format.set_bold() #设置为粗体
format.set_num_format(‘0.00‘) #设置数字格式为保留两个小数
#图标操作
workbook.add_chart({‘type‘:‘column‘}) #建立图表 类型:柱状图
chart.add_series({
‘categories‘: ‘=Sheet1!$B$1:$H$1‘, #类别为sheet1表中B1:H1
‘values‘ : ‘=Sheet1!$B$‘+cur_row+‘:$H$‘+cur_row, #值为‘B‘+cur_row:‘H‘+cur_row
‘line‘ : {‘color‘ : ‘black‘}, #线条 黑色
‘name‘ : ‘Sheet1!$A$‘+cur_row, #名字为‘A‘+cur_row cur_row是变量
})
chart.set_size({‘width‘ : 577,‘height‘ : 288}) #设置图表的高与宽
chart.set_title({‘name‘ :‘智游网站业务周报‘}) #设置图表名称
chart.set_y_axis({‘name‘ : ‘Mb/s‘}) #设置图表 y轴的名称
worksheet.insert_chart(‘A10‘,chart) #插入图表位置 在A10格
###################如果你还不懂 看看下面的代码######################
################ 建立xlsx文件 并生成图表文件 ############## #coding: utf-8 import xlsxwriter workbook = xlsxwriter.Workbook(‘./2.xlsx‘) worksheet = workbook.add_worksheet() chart = workbook.add_chart({‘type‘:‘column‘}) #建立图标 类型:柱状图 title = [‘网站名称‘,‘星期一‘,‘星期二‘,‘星期三‘,‘星期四‘,‘星期五‘,‘星期六‘,‘星期日‘,‘平均流量‘] webname = [‘网站1‘,‘网站2‘,‘网站3‘] data = [ [150,152,158,149,155,145,148], [2111,222,120,10,333,11,59292], [999,111,222,111,333,44,111], ] format = workbook.add_format() #创建自定义样式对象 format.set_border(1) #设定边界宽度为1 format_title = workbook.add_format() #建立一个format_title样式(样式内容如下) format_title.set_border(1) #设置边界宽度为 1 format_title.set_bg_color(‘#cccccc‘) #设置背景颜色为#ccccccc format_title.set_align(‘center‘) #设置对齐方式为 剧中 format_title.set_bold() #设置为粗体 format_ave = workbook.add_format() format_ave.set_border(1) format_ave.set_num_format(‘0.00‘) #设置数字为两位小数 worksheet.write_row(‘A1‘,title,format_title) #从A1横向写入title以format_title格式 worksheet.write_column(‘A2‘,webname,format) #从A2纵向写入webname以format格式 worksheet.write_row(‘B2‘,data[0],format) #从B2横向写入data[0]以foemat格式 worksheet.write_row(‘B3‘,data[1],format) worksheet.write_row(‘B4‘,data[2],format) def chart_series(cur_row): worksheet.write_formula(‘I‘+cur_row,‘=AVERAGE(B‘+cur_row+‘:H‘+cur_row+‘)‘,format_ave) chart.add_series({ ‘categories‘: ‘=Sheet1!$B$1:$H$1‘, ‘values‘ : ‘=Sheet1!$B$‘+cur_row+‘:$H$‘+cur_row, ‘line‘ : {‘color‘ : ‘black‘}, ‘name‘ : ‘Sheet1!$A$‘+cur_row, }) for row in range(2,5): chart_series(str(row)) chart.set_size({‘width‘ : 577,‘height‘ : 288}) chart.set_title({‘name‘ :‘某网站业务周报‘}) chart.set_y_axis({‘name‘ : ‘Mb/s‘}) worksheet.insert_chart(‘A10‘,chart) workbook.close()
最后记得关闭文件
小白笔记 如有错误请提醒修改!