关于Python里xlwings库对Excel表格的操作(二十七)

发布时间:2024年01月02日

这篇小笔记主要记录如何【如何使用xlwings库的“Charts类” 在一个工作表中创建多个图表】前面的小笔记已整理成目录,可点链接去目录寻找所需更方便。
【目录部分内容如下】【点击此处可进入目录】
(1)如何安装导入xlwings库;
(2)如何在Wps下使用xlwings中使用WPS对表格操作;
(3)如何安装导入xlwings库、如何用xlwings打开要操作的Excel表格;
(4)如何使用xlwings对Excel表格数据进行读取操作;
(5)如何使用xlwings对Excel表格进行“保存”或“另存为”操作;
(6) 如何使用xlwings对Excel表格进行写入数据操作;
(7)如何使用xlwings向Excel表格中写入Excel公式;
(8)如何使用xlwings库中的“name"函数和“replace”函数对工作表进行改名;
。。。。。。等等

【如何使用xlwings库的“Charts类” 在一个工作表中创建多个图表】

一、用“.charts.add”创建新图表;

二、用“.charts.name”重命名新图表;

三、用“.charts.set_source_data(数据区域)”设置图表的数据源;

四、用“.Charts.chart_type='参数'”设置图表类型;

五、用“.api[1].HasTitle = True ”设置图表标题是否显示;

六、用“.ChartTitle.Text = "图表标题"” 设置标题显示的文本。

(1)第一步:Work_Chart_1= Work_Sheet.charts.add(left=450, top=1, width=300, height=200)

#新建第1份图表并赋给变量Work_Chart_1,并设置位置和大小(“left”与左边的距离,“top”与顶边的距离,“width”图表的长,“height”图表的高)

? ? ? ? 第二步:Work_Chart_1.name='学生成绩图表1' ?

# 为图表命名,相当于把工作表默认的“Sheet1”重命名为其它名称一样。 ?

(2)第三步:Work_Chart_2= Work_Sheet.charts.add(left=10, top=200, width=300, height=200)

#新建第2份图表并赋给变量Work_Chart_2,并设置位置和大小(“left”与左边的距离,“top”与顶边的距离,“width”图表的长,“height”图表的高)

? ? ? ? ? 第四步:Work_Chart_2.name='学生成绩图表2' ?

# 为图表命名,相当于把工作表默认的“Sheet1”重命名为其它名称一样。

【举例说说更直观】

'''
一、用“.charts.add”创建新图表;
二、用“.charts.name”重命名新图表;
三、用“.charts.set_source_data(数据区域)”设置图表的数据源;
四、用“.Charts.chart_type='参数'”设置图表类型; 
五、用“.api[1].HasTitle = True ”设置图表标题是否显示;
六、用“.ChartTitle.Text = "图表标题"” 设置标题显示的文本;
然后是保存,关闭。
'''
import xlwings as xw
app=xw.App(visible=False,add_book=False)
app.display_alerts=False               #关闭各种提示信息,可以提高运行速度
File_Name='E:/素材/学生成绩表.xls'
#打开要处理的Excel文件名
Work_Book=app.books.open(File_Name)      
#打开要处理的Excel文件中的工作簿
Work_Sheet=Work_Book.sheets[0]      
#打开要处理的Excel工作簿中的工作表;
#“[0]”是指定打开最靠前的第1份工作表,也可以把“0”写成要打开的指定要打开的“工作表的名称”;
#现在只打开这一个工作表也相当于激活这工作表,后面没有打开激活另一工作表,则所有操作只对现这工作表起作用。

Work_Chart_1= Work_Sheet.charts.add(left=450, top=1, width=300, height=200)
#新建一个图表,并设置位置和大小(“left”与左边的距离,“top”与顶边的距离,“width”图表的长,“height”图表的高)
Work_Chart_1.name='学生成绩图表1'  
# 为图表命名,相当于把工作表默认的“Sheet1”重命名为其它名称一样。  
Chart_Data_1=Work_Sheet.range('B1:F9')  
# 指定统计成图表的数据,数据区域中最左边列和最顶部行作为坐标轴  
Work_Chart_1.set_source_data(Chart_Data_1)  
# 设置数据源
Work_Chart_1.chart_type='line'        
# 设置图表类型(如折线型,直方图型等),若无设置则是读取。 
Work_Chart_1.api[1].HasTitle = True
#“api[1]”是指使用win32com与Excel交互,“[0]”是调用EXCEL版本说明,“[1]”只是版权说明,两个都无实质用处但不能省。  
#“.HasTitle”通过API设置标题可见性(打开显示是True,关闭显示是False。这是一个例子,具体设置可能因 Excel 版本而异)  
Work_Chart_1.api[1].ChartTitle.Text = " 学 生 成 绩 图 表 顶 标 题 1"  
#“api[1]”是指使用win32com与Excel交互,“[0]”是调用EXCEL版本说明,“[1]”只是版权说明,两个都无实质用处但不能省。 
#“.ChartTitle.Text = "图表标题"” 通过API设置标题文本,若无设置则是读取。
Work_Chart_2= Work_Sheet.charts.add(left=10, top=200, width=300, height=200)
#新建一个图表,并设置位置和大小(“left”与左边的距离,“top”与顶边的距离,“width”图表的长,“height”图表的高)
Work_Chart_2.name='学生成绩图表2'  
# 为图表命名,相当于把工作表默认的“Sheet1”重命名为其它名称一样。  
Chart_Data_2=Work_Sheet.range('B1:F9')  
# 指定统计成图表的数据,数据区域中最左边列和最顶部行作为坐标轴  
Work_Chart_2.set_source_data(Chart_Data_2)  
# 设置数据源
Work_Chart_2.chart_type='line'        
# 设置图表类型(如折线型,直方图型等),若无设置则是读取。 
Work_Chart_2.api[1].HasTitle = True
#“api[1]”是指使用win32com与Excel交互,“[0]”是调用EXCEL版本说明,“[1]”只是版权说明,两个都无实质用处但不能省。  
#“.HasTitle”通过API设置标题可见性(打开显示是True,关闭显示是False。这是一个例子,具体设置可能因 Excel 版本而异)  
Work_Chart_2.api[1].ChartTitle.Text = " 学 生 成 绩 图 表 顶 标 题 2"  
#“api[1]”是指使用win32com与Excel交互,“[0]”是调用EXCEL版本说明,“[1]”只是版权说明,两个都无实质用处但不能省。 
#“.ChartTitle.Text = "图表标题"” 通过API设置标题文本,若无设置则是读取。
Chart_Name=Work_Sheet.charts
# “charts[0]”是指获取“Work_Sheet”指定工作表中的所有图表名称及在工作表。
print(f'“charts.name”显示当前激活的工作表及其里面的所有图表名称:{Chart_Name}')
Chart_Name_1=Work_Sheet.charts[0].name
# “charts[0]”是指获取“Work_Sheet”指定工作表中的第1份图表的名称(只有名称)
print(f'"charts[0].name"只显示第1份图表的名称:{Chart_Name_1}')
Chart_Name_2=Work_Sheet.charts[1].name
# “charts[0]”是指获取“Work_Sheet”指定工作表中的第2份图表的名称(只有名称)
print(f'"charts[1].name"只显示第2份图表的名称:{Chart_Name_2}')
print()
Chart_Title_1=Work_Chart_1.api[1].ChartTitle.Text
#“api[1]”是指使用win32com与Excel交互,“[0]”是调用EXCEL版本说明,“[1]”只是版权说明,两个都无实质用处但不能省。 
#用“.ChartTitle.Text”读取图表标题并赋给变量。
print(f'第1份图表的标题是:{Chart_Title_1}')
Chart_Title_2=Work_Chart_2.api[1].ChartTitle.Text
#“api[1]”是指使用win32com与Excel交互,“[0]”是调用EXCEL版本说明,“[1]”只是版权说明,两个都无实质用处但不能省。 
#用“.ChartTitle.Text”读取图表标题并赋给变量。
print(f'第2份图表的标题是:{Chart_Title_2}')
Work_Book.save()
#保存改动的工作簿。若无保存,则上述操作会随着工作簿的关闭而作废不保存。
Work_Book.close()
#关闭工作簿。
app.quit()
#退出Office软件,不驻留后台。

【运行前的表格】

【运行后的表格】

【终端的结果】

文章来源:https://blog.csdn.net/AAA000666_666000/article/details/135332704
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。