这篇小笔记主要记录【如何使用xlwings库设置图表内折线的线型、颜色、数值点大小、数值点形状、数值点颜色等】。前面的小笔记已整理成目录,可点链接去目录寻找所需更方便。
【目录部分内容如下】【点击此处可进入目录】
(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库设置图表内折线的线型、颜色、数值点大小、数值点形状、数值点颜色等】
(1)Work_Chart.api[1].SeriesCollection(1).Border.LineStyle=数值
# “Work_Chart”表示当前激活的图表;
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “Border.LineStyle”是指设置折线的类型(无设置则表示读取)。
# 附线型:“-4105”代表自动,“1或-4105”代表实线,“2或-4115”代表长虚线,“3或-4118”代表短虚线,“4”代表点划线,8种线型一直到“8”。
(2)Work_Chart.api[1].SeriesCollection(1).Border.Weight=数值
# “Work_Chart”表示当前激活的图表;
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “Border.Weight”是指设置曲线粗细,细至粗的数值从1到4(无设置则表示读取)。
(3)Work_Chart.api[1].SeriesCollection(1).Border.ColorIndex=数值
# “Work_Chart”表示当前激活的图表;
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “Border.ColorIndex”是指设置折线的颜色(无设置则表示读取)。
# 指定颜色可以用“Color=(RGB值)”或“ColorIndex=系列号”
# “ColorIndex=3”是指用系列号指定颜色,因为它的颜色选择是非全区域色,所以有时候用RGB来指定时会没有这颜色。
# 附部分颜色系列号:1黑、2白、3红、4鲜绿、5蓝、6黄、7粉红、8青绿、9深红、10绿、11深蓝、12深黄
(4)Work_Chart.api[1].SeriesCollection(1).Smooth=布尔值
# “Work_Chart”表示当前激活的图表;
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “Smooth”是指折线是否打开平滑直线,它是布尔值(默认是关闭False)(无设置则表示读取)。
(5)Work_Chart.api[1].SeriesCollection(1).MarkerStyle=数值
# “Work_Chart”表示当前激活的图表;
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “MarkerStyle”是指折线上的数值点(拐点)的类型(无设置则表示读取)。
# 附部分形状:“-4142”代表无,“1”代表小正方形,“2”代表小菱形,“3”代表小正三角形,共9种形状。
(6)Work_Chart.api[1].SeriesCollection(1).MarkerSize=数值
# “Work_Chart”表示当前激活的图表;
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “MarkerSize”是指折线上的数值点(拐点)的大小(无设置则表示读取)。
(7)Work_Chart.api[1].SeriesCollection(1).Shadow=布尔值
# “Work_Chart”表示当前激活的图表;
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “Shadow”是指折线上的数值点(拐点)的阴影是否打开(默认是关闭False)(无设置则表示读取)。
(8)Work_Chart.api[1].SeriesCollection(1).MarkerBackgroundColorIndex=数值
# “Work_Chart”表示当前激活的图表;
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “MarkerBackgroundColorIndex”是指折线上的数值点(拐点)的背景颜色(无设置则表示读取)。
# 附部分颜色系列号:“-4142”代表无,1黑、2白、3红、4鲜绿、5蓝、6黄、7粉红、8青绿、9深红、10绿、11深蓝、12深黄
(9)Work_Chart.api[1].SeriesCollection(1).MarkerForegroundColorIndex=数值
# “Work_Chart”表示当前激活的图表;
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “MarkerForegroundColorIndex”是指折线上的数值点(拐点)的前景颜色(无设置则表示读取)。
# 附部分颜色系列号:“-4142”代表无,1黑、2白、3红、4鲜绿、5蓝、6黄、7粉红、8青绿、9深红、10绿、11深蓝、12深黄
【举例说说更直观】
#【如何设置图表内的折线的线型、颜色等】
#一、用“.charts.add”创建新图表;
#二、用“.charts.name”重命名新图表;
#三、用“.charts.set_source_data(数据区域)”设置图表的数据源;
#四、用“.Charts.chart_type='参数'”设置图表类型;
#五、用“.api[1].HasTitle = True ”设置图表标题是否显示;
#六、用“.ChartTitle.Text = "图表标题"” 设置标题文本内容;
#七、用“.api[1].ChartTitle.Font.Name='字体名称'”设置标题文本字体;
#八、用“.api[1].ChartTitle.Font.Size=数值”设置标题文本字号;
#九、用“.api[1].ChartTitle.Font.Bold=布尔值”设置标题文本粗细;
#十、用“.api[1].ChartTitle.Font.Italic=布尔值”设置标题文本正斜;
#十一、用“.api[1].ChartTitle.Font.Color=(RGB值)”或“.api[1].ChartTitle.Font.ColorIndex=颜色系列号”设置标题文本颜色;
#十二、用“.api[1].Axes(1).HasTitle=布尔值”设置坐标轴标题打开或关闭。只标题打开才能进行下一步设置,若不打开就设置会出现错误。
#十三、用“.api[1].SeriesCollection(1).Border.LineStyle = 数值”设置折线线型;
#十四、用“.api[1].SeriesCollection(1).Border.Weight = 数值”设置折线粗细;
#十五、用“.api[1].SeriesCollection(1).Border.ColorIndex = 数值”设置折线颜色;
#十六、用“.api[1].SeriesCollection(1).Smooth=布尔值”设置折线是否平滑;
#十七、用“.api[1].SeriesCollection(1).MarkerStyle=数值”设置数值点(拐点)形状;
#十八、用“.api[1].SeriesCollection(1).MarkerSize=数值”设置数值点(拐点)大小;
#十九、用“.api[1].SeriesCollection(1).Shadow=布尔值”设置数值点(拐点)是否打开阴影;
#二十、用“.api[1].SeriesCollection(1).MarkerBackgroundColorIndex=数值”设置数值点(拐点)背景色;
#二十一、用“.api[1].SeriesCollection(1).MarkerForegroundColorIndexx=数值”设置数值点(拐点)前景色;
#然后是保存,关闭。
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= Work_Sheet.charts.add(left=450, top=1, width=300, height=200)
# 新建一个图表,并设置位置和大小(“left”与左边的距离,“top”与顶边的距离,“width”图表的长,“height”图表的高)
Work_Chart.name='学生成绩图表'
# 为图表命名,相当于把工作表默认的“Sheet1”重命名为其它名称一样。
Chart_Data=Work_Sheet.range('B1:F9')
# 指定统计成图表的数据,数据区域中最左边列和最顶部行作为坐标轴
Work_Chart.set_source_data(Chart_Data)
# 设置数据源
Work_Chart.chart_type='line'
# 设置图表类型(如折线型,直方图型等),若无设置则是读取。
# 附部分图表类型:
# line折线图、3d_line三维折线图、line_stacked堆积折线图、line_stacked_100百分比堆积折线图、line_markers数据点折线图、line_markers_stacked数据点堆积折线图、line_markers_stacked_100数据点百分比堆积折线图、
# column_clustered柱形图(簇状形)、column_stacked柱形图(堆积形)、column_stacked_100柱形图(百分比堆积形)、
# 3d_column_clustered柱形图(三维簇状形)、3d_column_stacked柱形图(三维堆积形)、3d_column_stacked_100柱形图(三维百分比堆积形)、3d_column柱形图(三维柱形图)
# pie饼图、3d_pie三维饼图、pie_of_pie复合饼图、pie_exploded分离形饼图、3d_pie_exploded三维分离形饼图、bar_of_pie复合条饼图
Work_Chart.api[1].HasTitle = True
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “.HasTitle”通过API设置标题可见性(打开显示是True,关闭显示是False。这是一个例子,具体设置可能因 Excel 版本而异)
Work_Chart.api[1].ChartTitle.Text = " 学 生 成 绩 图 表 顶 标 题"
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “.ChartTitle.Text = "图表标题"” 通过API设置标题文本,若无设置则是读取。
Work_Chart.api[1].ChartTitle.Font.Name='华文琥珀'
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “ChartTitle.Font.Name”是设置图表标题“字体名称”,若无设置则是读取。
Work_Chart.api[1].ChartTitle.Font.Size=16
# “ChartTitle.Font.Size”是设置图表标题“字体大小”,若无设置则是读取。
Work_Chart.api[1].ChartTitle.Font.Bold=True
# 设置是否加粗(True设为粗体,False取消粗体)
# “ChartTitle.Font.Bold”是设置图表标题“字体是否加粗”,若无设置则是读取。
Work_Chart.api[1].ChartTitle.Font.Italic=True
# 设置是否斜体(True设为斜体,False设为正体)
# “ChartTitle.Font.Italic”是设置图表标题“字体是否斜体”,若无设置则是读取。
Work_Chart.api[1].ChartTitle.Font.ColorIndex=3
# “ChartTitle.Font.Color”是设置图表标题“字体颜色”,若无设置则是读取。
# 指定颜色可以用“Color=(RGB值)”或“ColorIndex=系列号”
# “ColorIndex=3”是指用系列号指定颜色,因为它的颜色选择是非全区域色,所以有时候用RGB来指定时会没有这颜色。
# 附部分颜色系列号:1黑、2白、3红、4鲜绿、5蓝、6黄、7粉红、8青绿、9深红、10绿、11深蓝、12深黄
Work_Chart.api[1].Axes(1).HasMajorGridlines=True # 显示x轴主要网格线
Work_Chart.api[1].Axes(2).HasMajorGridlines=True # 显示y轴主要网格线
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “Axes(1)”是指激活(类似于鼠标的点击)X轴,“Axes(2)”是指激活(类似于鼠标的点击)Y轴
# “HasMajorGridlines”是指激活(类似于鼠标的点击)主要网格线(若无设置则是读取),True为打开,False为关闭。
#设置图表内的《数据系列格式线型、颜色等》,若无设置则是读取。
Plot_LineStyle_1=Work_Chart.api[1].SeriesCollection(1).Border.LineStyle
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “Border.LineStyle”是指设置折线的类型(无设置则表示读取)。
# 附线型:“-4105”代表自动,“1或-4105”代表实线,“2或-4115”代表长虚线,“3或-4118”代表短虚线,“4”代表点划线,8种线型一直到“8”。
Plot_Weight_1=Work_Chart.api[1].SeriesCollection(1).Border.Weight
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “Border.Weight”是指设置曲线粗细,细至粗的数值从1到4(无设置则表示读取)。
Plot_Color_1=Work_Chart.api[1].SeriesCollection(1).Border.ColorIndex
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “Border.ColorIndex”是指设置折线的颜色(无设置则表示读取)。
# 指定颜色可以用“Color=(RGB值)”或“ColorIndex=系列号”
# “ColorIndex=3”是指用系列号指定颜色,因为它的颜色选择是非全区域色,所以有时候用RGB来指定时会没有这颜色。
# 附部分颜色系列号:1黑、2白、3红、4鲜绿、5蓝、6黄、7粉红、8青绿、9深红、10绿、11深蓝、12深黄
Plot_Smooth_1=Work_Chart.api[1].SeriesCollection(1).Smooth
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “Smooth”是指折线是否打开平滑直线,它是布尔值(默认是关闭False)(无设置则表示读取)。
Plot_MarkerStyle_1=Work_Chart.api[1].SeriesCollection(1).MarkerStyle
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “MarkerStyle”是指折线上的数值点(拐点)的类型(无设置则表示读取)。
# 附部分形状:“-4142”代表无,“1”代表小正方形,“2”代表小菱形,“3”代表小正三角形,共9种形状。
Plot_MarkerSize_1=Work_Chart.api[1].SeriesCollection(1).MarkerSize
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “MarkerSize”是指折线上的数值点(拐点)的大小(无设置则表示读取)。
Plot_MarkerShadow_1=Work_Chart.api[1].SeriesCollection(1).Shadow
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “Shadow”是指折线上的数值点(拐点)的阴影是否打开(默认是关闭False)(无设置则表示读取)。
Plot_MarkerBg_1=Work_Chart.api[1].SeriesCollection(1).MarkerBackgroundColorIndex
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “MarkerBackgroundColorIndex”是指折线上的数值点(拐点)的背景颜色(无设置则表示读取)。
# 附部分颜色系列号:“-4142”代表无,1黑、2白、3红、4鲜绿、5蓝、6黄、7粉红、8青绿、9深红、10绿、11深蓝、12深黄
Plot_MarkerFg_1=Work_Chart.api[1].SeriesCollection(1).MarkerForegroundColorIndex
# “api[1]”是指使用win32com与Excel交互,不能省;也就是Xlwings库与VBA的链接;要注意大小写及Api\api\api[0]\api[1]不同的地方。
# “SeriesCollection(1)”表示指定要操作的系列号为"1"的第1条曲线或图像。
# “MarkerForegroundColorIndex”是指折线上的数值点(拐点)的前景颜色(无设置则表示读取)。
# 附部分颜色系列号:“-4142”代表无,1黑、2白、3红、4鲜绿、5蓝、6黄、7粉红、8青绿、9深红、10绿、11深蓝、12深黄
Work_Chart.api[1].SeriesCollection(1).Border.LineStyle=3
Work_Chart.api[1].SeriesCollection(1).Border.Weight=4
Work_Chart.api[1].SeriesCollection(1).Border.ColorIndex = 11
Work_Chart.api[1].SeriesCollection(1).Smooth= True
Work_Chart.api[1].SeriesCollection(1).MarkerStyle = 1
Work_Chart.api[1].SeriesCollection(1).MarkerSize = 6
Work_Chart.api[1].SeriesCollection(1).Shadow =True
Work_Chart.api[1].SeriesCollection(1).MarkerBackgroundColorIndex = 3
Work_Chart.api[1].SeriesCollection(1).MarkerForegroundColorIndex = 3
Plot_LineStyle_2=Work_Chart.api[1].SeriesCollection(1).Border.LineStyle
Plot_Weight_2=Work_Chart.api[1].SeriesCollection(1).Border.Weight
Plot_Color_2=Work_Chart.api[1].SeriesCollection(1).Border.ColorIndex
Plot_Smooth_2=Work_Chart.api[1].SeriesCollection(1).Smooth
Plot_MarkerStyle_2=Work_Chart.api[1].SeriesCollection(1).MarkerStyle
Plot_MarkerSize_2=Work_Chart.api[1].SeriesCollection(1).MarkerSize
Plot_MarkerShadow_2=Work_Chart.api[1].SeriesCollection(1).Shadow
Plot_MarkerBg_2=Work_Chart.api[1].SeriesCollection(1).MarkerBackgroundColorIndex
Plot_MarkerFg_2=Work_Chart.api[1].SeriesCollection(1).MarkerForegroundColorIndex
print(f'原折线线型:{Plot_LineStyle_1}; 重新设置后的折线线型:{Plot_LineStyle_2}')
print(f'原折线粗细:{Plot_Weight_1}; 重新设置后的折线粗细:{Plot_Weight_2}')
print(f'原折线颜色:{Plot_Color_1}; 重新设置后的折线颜色:{Plot_Color_2}')
print(f'原折线是否是平滑线:{Plot_Smooth_1}; 重新设置后的折线是否是平滑线:{Plot_Smooth_2}')
print(f'原折线数值点形状:{Plot_MarkerStyle_1}; 重新设置后的折线数值点形状:{Plot_MarkerStyle_2}')
print(f'原折线数值点大小:{Plot_MarkerSize_1}; 重新设置后的折线数值点大小:{Plot_MarkerSize_2}')
print(f'原折线数值点是否是打开阴影:{Plot_MarkerShadow_1}; 重新设置后的折线数值点是否是打开阴影:{Plot_MarkerShadow_2}')
print(f'原折线数值点背景颜色:{Plot_MarkerBg_1}; 重新设置后的折线数值点背景颜色:{Plot_MarkerBg_2}')
print(f'原折线数值点前景颜色:{Plot_MarkerFg_1}; 重新设置后的折线数值点前景颜色:{Plot_MarkerFg_2}')
Work_Book.save()
# 保存改动的工作簿。若无保存,则上述操作会随着工作簿的关闭而作废不保存。
Work_Book.close()
# 关闭工作簿。
app.quit()
# 退出Office软件,不驻留后台。
【运行前的表格】
【运行后的表格】
【终端显示的结果】