图表创建好后需要保存输出,本节讨论输出图表时需要注意的一些问题。[大谦Excel,dqexcel点com]
图表的大小
图表中文本的字体大小等与图表的大小是相关联的,只有图表大小固定时说文本字体大小才有意义。如果导出的图表大小不合适,后期需要调整大小,图表中文本的字体大小就变了。所以,生成图表时有必要指定固定大小。
用Shapes对象的AddChart2函数创建图表时可以直接设置图表的位置和大小,也可以创建图表后,用Shape对象的Left,Top, Width和Height等属性设置和修改图表的大小。
下面的代码创建图表并设置图表的大小。完整代码见:Samples->ch04 美化Excel图表->28 设置图表的大小->py.py。
root=os.getcwd() #获取当前工作路径
app=xw.App(visible=True,add_book=False) #创建Excel应用
wb=app.books.open(root+r'/data.xlsx',read_only=False) #打开数据文件返回工作簿对象
sht=wb.sheets('Sheet1') #获取指定工作表对象
sht.api.Range('A2:C11').Select() #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlColumnClustered,20,20,400,300,True)
cht=shp.Chart #获取图表
shp.Left=30 #设置图表位置和大小
shp.Top=30
shp.Width=300
shp.Height=200
字体设置
各种期刊对论文中文字的字体和字体大小都有要求,比如5-8磅等,最大不能超过12磅等。常见的英文字体有Arial, Times New Roman等。字体设置需要注意的问题,第一就是图表大小要先确定下来,成图后图表大小不作改动或不作大幅改动。第二就是字体的风格要统一,不要使用过多的字体样式。
第3章介绍了图表中坐标轴标题、刻度标签和图表标题等的添加和设置,请参阅。
将图表保存为图片
图表创建和编辑完成后,最常见的保存形式是保存为图片。图片有位图格式和矢量格式之分,Excel中两种格式都可以保存。
使用Chart对象的Export方法将图表导出到指定格式的图片文件。该方法的语法格式为:
cht.Export(FileName,FilterName,Interactive)
其中,cht表示图表对象,3个参数:
• FileName – 必需选项,表示导出文件的路径和文件名。
• FilterName – 可选项,指定导出文件的扩展名。
• Interactive – 可选项,值为True时显示包含筛选特定选项的对话框,值为False时使用默认选项。
下面创建图表,使用Chart对象的Export方法将图表以图片格式保存到相同路径下的cht.jpg文件。
root=os.getcwd() #获取当前工作路径
app=xw.App(visible=True,add_book=False) #创建Excel应用
wb=app.books.open(root+r'/data.xlsx',read_only=False) #打开数据文件返回工作簿对象
sht=wb.sheets('Sheet1') #获取指定工作表对象
sht.api.Range('A2:C8').Select() #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlColumnClustered,20,20,350,250,True)
cht=shp.Chart #获取图表
set_style(cht) #设置样式
cht.Export(root+'/cht.jpg') #将图表导出到JPG图片
矢量格式输出
矢量格式的图片在无限放大时不影响图形的精度,所以图片质量很高。Excel支持多种图片矢量格式,如pdf,svg等。
可以用ExportAsFixedFormat函数和Export函数实现矢量格式输出。下面创建图表,使用Chart对象的Export方法将图表以矢量图片格式保存到相同路径下的cht.svg文件。将工作表画面保存到cht.pdf文件。
root=os.getcwd() #获取当前工作路径
app=xw.App(visible=True,add_book=False) #创建Excel应用
wb=app.books.open(root+r'/data.xlsx',read_only=False) #打开数据文件返回工作簿对象
sht=wb.sheets('Sheet1') #获取指定工作表对象
sht.api.Range('A2:C11').Select() #数据
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlColumnClustered,20,20,350,250,True)
cht=shp.Chart #获取图表
set_style(cht) #设置样式
cht.Export(root+'/cht.svg') #将图表导出到SVG图片
cht.ExportAsFixedFormat(0,root+'/cht.pdf') #将图表导出到PDF文件