作者:超级大洋葱806
来源:https://blog.csdn.net/u014779536/article/details/108182833
大家好,我是东哥。
今天给大家分享一篇Python自动化办公干货,全文3W+字,内容很干,可以码住细细品味。
python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。
在UI自动化或者接口自动化中数据维护是一个核心,所以此模块非常实用。
到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境。
或者在cmd窗口 pip install xlrd
import xlrd
excel中最重要的方法就是book和sheet的操作
table = data.sheets()[0] #通过索引顺序获取
table = data.sheet_by_index(sheet_indx) #通过索引顺序获取
table = data.sheet_by_name(sheet_name) #通过名称获取
# 以上三个函数都会返回一个xlrd.sheet.Sheet()对象
names = data.sheet_names() #返回book中所有工作表的名字
data.sheet_loaded(sheet_name or indx) # 检查某个sheet是否导入完毕
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)
# 返回由该列中所有单元格的数据组成的列表
import xlrd
xlsx = xlrd.open_workbook('./3_1 xlrd 读取 操作练习.xlsx')
# 通过sheet名查找:xlsx.sheet_by_name('sheet1')
# 通过索引查找:xlsx.sheet_by_index(3)
table = xlsx.sheet_by_index(0)
# 获取单个表格值 (2,1)表示获取第3行第2列单元格的值
value = table.cell_value(2, 1)
print('第3行2列值为',value)
# 获取表格行数
nrows = table.nrows
print('表格一共有',nrows,'行')
# 获取第4列所有值(列表生成式)
name_list = [str(table.cell_value(i, 3)) for i in range(1, nrows)]
print('第4列所有的值:',name_list)
# 3.2.2 使用xlwt创建新表格并写入
def fun3_2_2():
# 创建新的workbook(其实就是创建新的excel)
workbook = xlwt.Workbook(encoding= 'ascii')
# 创建新的sheet表
worksheet = workbook.add_sheet('My new Sheet')
# 往表格写入内容
worksheet.write(0,0, '内容1')
worksheet.write(2,1, '内容2')
# 保存
workbook.save('新创建的表格.xls')
# 3.2.4 设置列宽
def fun3_2_4():
# 创建新的workbook(其实就是创建新的excel)
workbook = xlwt.Workbook(encoding= 'ascii')
# 创建新的sheet表
worksheet = workbook.add_sheet('My new Sheet')
# 往表格写入内容
worksheet.write(0,0, '内容1')
worksheet.write(2,1, '内容2')
# 设置列宽
worksheet.col(0).width = 256*20
# 保存
workbook.save('新创建的表格.xls')
# 3.2.6 合并列和行
def fun3_2_6():
# 创建新的workbook(其实就是创建新的excel)
workbook = xlwt.Workbook(encoding= 'ascii')
# 创建新的sheet表
worksheet = workbook.add_sheet('My new Sheet')
# 往表格写入内容
worksheet.write(0,0, '内容1')
# 合并 第1行到第2行 的 第0列到第3列
worksheet.write_merge(1, 2, 0, 3, 'Merge Test')
# 保存
workbook.save('新创建的表格.xls')
# 设置单元格背景色
def fun3_2_8():
# 创建新的workbook(其实就是创建新的excel)
workbook = xlwt.Workbook(encoding= 'ascii')
# 创建新的sheet表
worksheet = workbook.add_sheet('My new Sheet')
# 往表格写入内容
worksheet.write(0,0, '内容1')
# 创建样式
pattern = xlwt.Pattern()
# May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
# 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...
pattern.pattern_fore_colour = 5
style = xlwt.XFStyle()
style.pattern = pattern
# 使用样式
worksheet.write(2,1, '内容2',style)
pip install xlutils
# 3.3.3 xlutils读取 写入 Excel 表格信息
def fun3_3_3():
# file_path:文件路径,包含文件的全名称
# formatting_info=True:保留Excel的原格式(使用与xlsx文件)
workbook = xlrd.open_workbook('3_3 xlutils 修改操作练习.xlsx')
new_workbook = copy(workbook) # 将xlrd对象拷贝转化为xlwt对象
# 读取表格信息
sheet = workbook.sheet_by_index(0)
col2 = sheet.col_values(1) # 取出第二列
cel_value = sheet.cell_value(1, 1)
print(col2)
print(cel_value)
# 写入表格信息
write_save = new_workbook.get_sheet(0)
write_save.write(0, 0, 'xlutils写入!')
new_workbook.save('new_test.xls') # 保存工作簿
xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改
可以和matplotlib以及pandas无缝连接,支持读写numpy、pandas数据类型,将matplotlib可视化图表导入到excel中。
可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
开源免费,一直在更新
import xlwings as xw
wb = app.books.open('example.xlsx')
#练习的时候建议直接用下面这条
#wb = xw.Book('example.xlsx')
#这样的话就不会频繁打开新的Excel
wb.close()
# 导入xlwings模块
import xlwings as xw
# 打开Excel程序,默认设置:程序可见,只打开不新建工作薄,屏幕更新关闭
app=xw.App(visible=True,add_book=False)
app.display_alerts=False
app.screen_updating=False
# 文件位置:filepath,打开test文档,然后保存,关闭,结束程序
filepath=r'g:\Python Scripts\test.xlsx'
wb=app.books.open(filepath)
wb.save()
wb.close()
app.quit()
import xlwings as xw
app=xw.App(visible=True,add_book=False)
wb=app.books.add()
# wb就是新建的工作簿(workbook),下面则对wb的sheet1的A1单元格赋值
wb.sheets['sheet1'].range('A1').value='人生'
wb.save(r'd:\test.xlsx')
wb.close()
app.quit()
wb=xw.books['工作簿的名字']
sht=xw.books['工作簿的名字'].sheets['sheet的名字']
# 或者
wb=xw.books['工作簿的名字']
sht=wb.sheets[sheet的名字]
rng=xw.books['工作簿的名字'].sheets['sheet的名字']
# 或者
sht=xw.books['工作簿的名字'].sheets['sheet的名字']
rng=sht.range('A1')
rng = sht.range('a1')
#rng = sht['a1']
#rng = sht[0,0] 第一行的第一列即a1,相当于pandas的切片
sht.range('a1').value = 'Hello'
默认按行插入:A1:D1分别写入1,2,3,4
sht.range('a1').value = [1,2,3,4]
sht.range('a2:a5').value = [5,6,7,8]
sht.range('a2').options(transpose=True).value = [5,6,7,8]
多行输入就要用二维列表了:
# 将A1的值,读取到a变量中
a=sht.range('A1').value
rng = sht.range('a1').expand('table')
nrows = rng.rows.count
ncols = rng.columns.count
#用切片
fst_col = sht[0,:ncols].value
# 引用Excel程序中,当前的工作簿
wb=xw.books.acitve
# 返回工作簿的绝对路径
x=wb.fullname
# 返回工作簿的名称
x=wb.name
# 保存工作簿,默认路径为工作簿原路径,若未保存则为脚本所在的路径
x=wb.save(path=None)
# 关闭工作簿
x=wb.close()
# 引用当前活动工作表的单元格
rng=xw.Range('A1')
# 加入超链接
# rng.add_hyperlink(r'www.baidu.com','百度','提示:点击即链接到百度')
# 取得当前range的地址
rng.address
rng.get_address()
# 清除range的内容
rng.clear_contents()
# 清除格式和内容
rng.clear()
# 取得range的背景色,以元组形式返回RGB值
rng.color
# 设置range的颜色
rng.color=(255,255,255)
# 清除range的背景色
rng.color=None
# 获得range的第一列列标
rng.column
# 返回range中单元格的数据
rng.count
# 返回current_region
rng.current_region
# 返回ctrl + 方向
rng.end('down')
# 获取公式或者输入公式
rng.formula='=SUM(B1:B5)'
# 数组公式
rng.formula_array
# 获得单元格的绝对地址
rng.get_address(row_absolute=True, column_absolute=True,include_sheetname=False, external=False)
# 获得列宽
rng.column_width
# 返回range的总宽度
rng.width
# 获得range的超链接
rng.hyperlink
# 获得range中右下角最后一个单元格
rng.last_cell
# range平移
rng.offset(row_offset=0,column_offset=0)
#range进行resize改变range的大小
rng.resize(row_size=None,column_size=None)
# range的第一行行标
rng.row
# 行的高度,所有行一样高返回行高,不一样返回None
rng.row_height
# 返回range的总高度
rng.height
# 返回range的行数和列数
rng.shape
# 返回range所在的sheet
rng.sheet
#返回range的所有行
rng.rows
# range的第一行
rng.rows[0]
# range的总行数
rng.rows.count
# 返回range的所有列
rng.columns
# 返回range的第一列
rng.columns[0]
# 返回range的列数
rng.columns.count
# 所有range的大小自适应
rng.autofit()
# 所有列宽度自适应
rng.columns.autofit()
# 所有行宽度自适应
rng.rows.autofit()
# 新建工作表
xw.sheets.add(name=None,before=None,after=None)
# 引用当前活动sheet
xw.sheets.active
# 将a1,a2,a3输入第一列,b1,b2,b3输入第二列
list1=[['a1’,'a2','a3'],['b1','b2','b3']]
sht.range('A1').value=list1
# 选取第一列
rng=sht. range('A1').expand('down')
rng.value=['a1','a2','a3']
# 选取表格
rng.sht.range('A1').expand('table')
rng.value=[['a1’,'a2','a3'],['b1','b2','b3']]
import xlwings as xw
app = xw.App()
wb = app.books.active
sht = wb.sheets.active
# 生成图表的数据
sht.range('A1').value = [['时间', '数量'], ['1日', 2], ['2日', 1], ['3日', 3]
, ['4日', 4], ['5日', 5], ['6日', 6]]
'''图表类型参数,被注释的那几个,无法生成对应的图表'''
dic = {
'3d_area': -4098,
'3d_area_stacked': 78,
'3d_area_stacked_100': 79,
'3d_bar_clustered': 60,
'3d_bar_stacked': 61,
'3d_bar_stacked_100': 62,
'3d_column': -4100,
'3d_column_clustered': 54,
'3d_column_stacked': 55,
'3d_column_stacked_100': 56,
'3d_line': -4101,
'3d_pie': -4102,
'3d_pie_exploded': 70,
'area': 1,
'area_stacked': 76,
'area_stacked_100': 77,
'bar_clustered': 57,
'bar_of_pie': 71,
'bar_stacked': 58,
'bar_stacked_100': 59,
'bubble': 15,
'bubble_3d_effect': 87,
'column_clustered': 51,
'column_stacked': 52,
'column_stacked_100': 53,
'cone_bar_clustered': 102,
'cone_bar_stacked': 103,
'cone_bar_stacked_100': 104,
'cone_col': 105,
'cone_col_clustered': 99,
'cone_col_stacked': 100,
'cone_col_stacked_100': 101,
'cylinder_bar_clustered': 95,
'cylinder_bar_stacked': 96,
'cylinder_bar_stacked_100': 97,
'cylinder_col': 98,
'cylinder_col_clustered': 92,
'cylinder_col_stacked': 93,
'cylinder_col_stacked_100': 94,
'doughnut': -4120,
'doughnut_exploded': 80,
'line': 4,
'line_markers': 65,
'line_markers_stacked': 66,
'line_markers_stacked_100': 67,
'line_stacked': 63,
'line_stacked_100': 64,
'pie': 5,
'pie_exploded': 69,
'pie_of_pie': 68,
'pyramid_bar_clustered': 109,
'pyramid_bar_stacked': 110,
'pyramid_bar_stacked_100': 111,
'pyramid_col': 112,
'pyramid_col_clustered': 106,
'pyramid_col_stacked': 107,
'pyramid_col_stacked_100': 108,
'radar': -4151,
'radar_filled': 82,
'radar_markers': 81,
# 'stock_hlc': 88,
# 'stock_ohlc': 89,
# 'stock_vhlc': 90,
# 'stock_vohlc': 91,
# 'surface': 83,
# 'surface_top_view': 85,
# 'surface_top_view_wireframe': 86,
# 'surface_wireframe': 84,
'xy_scatter': -4169,
'xy_scatter_lines': 74,
'xy_scatter_lines_no_markers': 75,
'xy_scatter_smooth': 72,
'xy_scatter_smooth_no_markers': 73
}
w = 385
h = 241
n = 0
x = 100
y = 10
for i in dic.keys():
xx = x + n % 3*w # 用来生成图表放置的x坐标。
yy = y + n//3*h # 用来生成图表放置的y坐标。
chart = sht.charts.add(xx, yy)
chart.set_source_data(sht.range('A1').expand())
chart.chart_type = i
chart.api[1].ChartTitle.Text = i
n += 1
wb.save('chart_图表')
wb.close()
app.quit()
1. xlwings 新建 Excel 文档
# 3.4.3 xlwings 打开已存在的Excel文件
def fun3_4_3():
# 新建Excle 默认设置:程序可见,只打开不新建工作薄,屏幕更新关闭
app = xw.App(visible=True, add_book=False)
app.display_alerts = False
app.screen_updating = False
# 打开已存在的Excel文件
wb=app.books.open('./3_4 xlwings 修改操作练习.xlsx')
# 保存工作簿
wb.save('example_2.xlsx')
# 退出工作簿
wb.close()
# 退出Excel
app.quit()
相关文章阅读:
Workbook就是一个excel工作表;
Sheet是工作表中的一张表页;
Cell就是简单的一个格。
from openpyxl import Workbook
wb = Workbook()
# grab the active worksheet
ws = wb.active
# Data can be assigned directly to cells
ws['A1'] = 42
# Rows can also be appended
ws.append([1, 2, 3])
# Python types will automatically be converted
import datetime
ws['A2'] = datetime.datetime.now()
# Save the file
wb.save('sample.xlsx')
from openpyxl import Workbook
# 实例化
wb = Workbook()
# 激活 worksheet
ws = wb.active
# 方式一:数据可以直接分配到单元格中(可以输入公式)
ws['A1'] = 42
# 方式二:可以附加行,从第一列开始附加(从最下方空白处,最左开始)(可以输入多行)
ws.append([1, 2, 3])
# 方式三:Python 类型会被自动转换
ws['A3'] = datetime.datetime.now().strftime('%Y-%m-%d')
# sheet 名称可以作为 key 进行索引
>>> ws3 = wb['New Title']
>>> ws4 = wb.get_sheet_by_name('New Title')
>>> ws is ws3 is ws4
True
# 方法一
>>> c = ws['A4']
# 方法二:row 行;column 列
>>> d = ws.cell(row=4, column=2, value=10)
# 方法三:只要访问就创建
>>> for i in range(1,101):
... for j in range(1,101):
... ws.cell(row=i, column=j)
wb.save('文件名称.xlsx')
# 获得最大列和最大行
print(sheet.max_row)
print(sheet.max_column)
sheet.rows
为生成器, 里面是每一行的数据,每一行又由一个tuple包裹。
sheet.columns
类似,不过里面是每个tuple是每一列的单元格。
from openpyxl.utils import get_column_letter, column_index_from_string
# 根据列的数字返回字母
print(get_column_letter(2)) # B
# 根据字母返回列的数字
print(column_index_from_string('D')) # 4
rows = [
['Number', 'data1', 'data2'],
[2, 40, 30],
[3, 40, 25],
[4, 50, 30],
[5, 30, 10],
[6, 25, 5],
[7, 50, 10]]
list(zip(*rows))
# out
[('Number', 2, 3, 4, 5, 6, 7),
('data1', 40, 40, 50, 30, 25, 50),
('data2', 30, 25, 30, 10, 5, 10)]
# 注意 方法会舍弃缺少数据的列(行)
rows = [
['Number', 'data1', 'data2'],
[2, 40 ], # 这里少一个数据
[3, 40, 25],
[4, 50, 30],
[5, 30, 10],
[6, 25, 5],
[7, 50, 10],
]
# out
[('Number', 2, 3, 4, 5, 6, 7), ('data1', 40, 40, 50, 30, 25, 50)]
下面的代码指定了等线24号
,加粗斜体
,字体颜色红色
。直接使用cell的font
属性,将Font对象赋值给它。
bold_itatic_24_font = Font(name='等线', size=24, italic=True, color=colors.RED, bold=True)
sheet['A1'].font = bold_itatic_24_font
也是直接使用cell的属性aligment
,这里指定垂直居中和水平居中。除了center,还可以使用right、left
等等参数
# 第2行行高
sheet.row_dimensions[2].height = 40
# C列列宽
sheet.column_dimensions['C'].width = 30
sheet.unmerge_cells('A1:C3')
from openpyxl import Workbook
from openpyxl.chart import BarChart, Series, Reference
wb = Workbook(write_only=True)
ws = wb.create_sheet()
rows = [
('Number', 'Batch 1', 'Batch 2'),
(2, 10, 30),
(3, 40, 60),
(4, 50, 70),
(5, 20, 10),
(6, 10, 40),
(7, 50, 30),
]
for row in rows:
ws.append(row)
chart1 = BarChart()
chart1.type = 'col'
chart1.style = 10
chart1.title = 'Bar Chart'
chart1.y_axis.title = 'Test number'
chart1.x_axis.title = 'Sample length (mm)'
data = Reference(ws, min_col=2, min_row=1, max_row=7, max_col=3)
cats = Reference(ws, min_col=1, min_row=2, max_row=7)
chart1.add_data(data, titles_from_data=True)
chart1.set_categories(cats)
chart1.shape = 4
ws.add_chart(chart1, 'A10')
from copy import deepcopy
chart2 = deepcopy(chart1)
chart2.style = 11
chart2.type = 'bar'
chart2.title = 'Horizontal Bar Chart'
ws.add_chart(chart2, 'G10')
chart3 = deepcopy(chart1)
chart3.type = 'col'
chart3.style = 12
chart3.grouping = 'stacked'
chart3.overlap = 100
chart3.title = 'Stacked Chart'
ws.add_chart(chart3, 'A27')
chart4 = deepcopy(chart1)
chart4.type = 'bar'
chart4.style = 13
chart4.grouping = 'percentStacked'
chart4.overlap = 100
chart4.title = 'Percent Stacked Chart'
ws.add_chart(chart4, 'G27')
wb.save('bar.xlsx')
# 3.5.2 openpyxl 新建Excel
def fun3_5_2():
wb = Workbook()
# 注意:该函数调用工作表的索引(_active_sheet_index),默认是0。
# 除非你修改了这个值,否则你使用该函数一直是在对第一张工作表进行操作。
ws = wb.active
# 设置sheet名称
ws.title = 'New Title'
# 设置sheet颜色
ws.sheet_properties.tabColor = '1072BA'
# 保存表格
wb.save('保存一个新的excel.xlsx')
# 3.5.4 openpyxl 读写Excel
def fun3_5_4():
wb = load_workbook('./3_5 openpyxl 修改操作练习.xlsx')
# 注意:该函数调用工作表的索引(_active_sheet_index),默认是0。
# 除非你修改了这个值,否则你使用该函数一直是在对第一张工作表进行操作。
ws = wb.active
# 读取单元格信息
cellB2_value = ws['B2'].value
print('单元格B2内容为:',cellB2_value)
# 写入单元格
ws['A1'].value = 'OPENPYXL'
# 保存表格
wb.save('copy.xlsx')
XlsxWriter是一个用来写Excel2007和xlsx文件格式的python模块。它可以用来写文本、数字、公式并支持单元格格式化、图片、图表、文档配置、自动过滤等特性
优点:功能更多、文档高保真、扩展格式类型、更快并可配置 缺点:不能用来读取和修改excel文件
# 创建文件
workbook = xlsxwriter.Workbook('new_excel.xlsx')
# 法一:
worksheet.write('A1', 'write something')
# 法二:
worksheet.write(1, 0, 'hello world')
worksheet.write(2, 1, '=sum(B1:B2)')
# 写入日期
d = workbook.add_format({'num_format': 'yyyy-mm-dd'})
worksheet.write(0, 2, datetime.datetime.strptime('2017-09-13', '%Y-%m-%d'), d)
# 自定义格式
f = workbook.add_format({'border': 1, 'font_size': 13, 'bold': True, 'align': 'center','bg_color': 'cccccc'})
worksheet.write('A3', 'python excel', f)
worksheet.set_row(0, 40, f)
worksheet.set_column('A:E', 20, f)
# 合并单元格写入
worksheet.merge_range(7,5, 11, 8, 'merge_range')
# -*- coding:utf-8 -*-
import xlsxwriter
# 创建一个excel
workbook = xlsxwriter.Workbook('chart_line.xlsx')
# 创建一个sheet
worksheet = workbook.add_worksheet()
# worksheet = workbook.add_worksheet('bug_analysis')
# 自定义样式,加粗
bold = workbook.add_format({'bold': 1})
# --------1、准备数据并写入excel---------------
# 向excel中写入数据,建立图标时要用到
headings = ['Number', 'testA', 'testB']
data = [
['2017-9-1', '2017-9-2', '2017-9-3', '2017-9-4', '2017-9-5', '2017-9-6'],
[10, 40, 50, 20, 10, 50],
[30, 60, 70, 50, 40, 30],
]
# 写入表头
worksheet.write_row('A1', headings, bold)
# 写入数据
worksheet.write_column('A2', data[0])
worksheet.write_column('B2', data[1])
worksheet.write_column('C2', data[2])
# --------2、生成图表并插入到excel---------------
# 创建一个柱状图(line chart)
chart_col = workbook.add_chart({'type': 'line'})
# 配置第一个系列数据
chart_col.add_series({
# 这里的sheet1是默认的值,因为我们在新建sheet时没有指定sheet名
# 如果我们新建sheet时设置了sheet名,这里就要设置成相应的值
'name': '=Sheet1!$B$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$B$2:$B$7',
'line': {'color': 'red'},
})
# 配置第二个系列数据
chart_col.add_series({
'name': '=Sheet1!$C$1',
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$C$2:$C$7',
'line': {'color': 'yellow'},
})
# 配置第二个系列数据(用了另一种语法)
# chart_col.add_series({
# 'name': ['Sheet1', 0, 2],
# 'categories': ['Sheet1', 1, 0, 6, 0],
# 'values': ['Sheet1', 1, 2, 6, 2],
# 'line': {'color': 'yellow'},
# })
# 设置图表的title 和 x,y轴信息
chart_col.set_title({'name': 'The xxx site Bug Analysis'})
chart_col.set_x_axis({'name': 'Test number'})
chart_col.set_y_axis({'name': 'Sample length (mm)'})
# 设置图表的风格
chart_col.set_style(1)
# 把图表插入到worksheet并设置偏移
worksheet.insert_chart('A10', chart_col, {'x_offset': 25, 'y_offset': 10})
workbook.close()
# -*- coding:utf-8 -*-
import xlsxwriter
# 创建一个excel
workbook = xlsxwriter.Workbook('chart_pie.xlsx')
# 创建一个sheet
worksheet = workbook.add_worksheet()
# 自定义样式,加粗
bold = workbook.add_format({'bold': 1})
# --------1、准备数据并写入excel---------------
# 向excel中写入数据,建立图标时要用到
data = [
['closed', 'active', 'reopen', 'NT'],
[1012, 109, 123, 131],
]
# 写入数据
worksheet.write_row('A1', data[0], bold)
worksheet.write_row('A2', data[1])
# --------2、生成图表并插入到excel---------------
# 创建一个柱状图(pie chart)
chart_col = workbook.add_chart({'type': 'pie'})
# 配置第一个系列数据
chart_col.add_series({
'name': 'Bug Analysis',
'categories': '=Sheet1!$A$1:$D$1',
'values': '=Sheet1!$A$2:$D$2',
'points': [
{'fill': {'color': '#00CD00'}},
{'fill': {'color': 'red'}},
{'fill': {'color': 'yellow'}},
{'fill': {'color': 'gray'}},
],
})
# 设置图表的title 和 x,y轴信息
chart_col.set_title({'name': 'Bug Analysis'})
# 设置图表的风格
chart_col.set_style(10)
# 把图表插入到worksheet以及偏移
worksheet.insert_chart('B10', chart_col, {'x_offset': 25, 'y_offset': 10})
workbook.close()
pip install pypiwin32
pip install pandas
联系客服