可视化数据已成为提高演示文稿专业度的关键因素之一。使用Python从Excel读取数据并在PowerPoint幻灯片中创建图表不仅能够极大地简化图表创建过程,还能确保数据的准确性和图表的即时性。通过Python这一桥梁,我们可以轻松实现数据自动化处理和图表生成,进而提升演示文稿的质量和效率。本文将演示如何使用Python读取Excel数据在PPT中创建图表,以及将Excel图表以图片形式插入到幻灯片中。
本文所用的方法需要用到Spire.Presentation for Python和Spire.XLS for Python,PyPI:pip install Spire.Presentation Spire.XLS
。
我们可以通过读取Excel工作表数据,然后在幻灯片中创建一个图表并将读取数据设置为图表的数据,最后进行纵横坐标设置,来实现读取Excel数据在演示文稿中创建图表。
操作步骤示例:
Presentation
实例,使用Presentation.SlideSize.Type
属性设置幻灯片大小。Workbook
实例,并使用Workbook.LoadFromFile()
载入Excel文件。ISlide.Shapes.AppendChart()
方法在默认幻灯片中创建一个图表,并使用IChart.ChartData.Clear(null, 0, 5, 5)
方法清除图表的示例数据。Worksheet.AllocatedRange[].Text
读取表头和列头文本,并通过IChart.ChartData[].Text
属性将其设置为图表数据的表头和列头。Worksheet.AllocatedRange[].NumberValue
属性读取数据,并通过IChart.ChartData[].NumberValue
将其设置为图表数据对应单元格的数据。IChart.ChartTitle
下的属性设置图表标题。IChart.Series.SeriesLabel
和IChart.Categories.CategoryLabels
设置图表系列和类别对应的单元格范围。IChart.Series.get_Item().Values
设置系列对应的数据单元格范围。Worksheet.AllocatedRange[].NumberFormat
属性读取Excel数据单元格的数字格式,并通过IChart.PrimaryValueAxis.NumberFormat
将其设置为图表纵坐标的数字格式。Presentation.SaveToFile()
保存演示文稿。代码示例
from spire.presentation import Presentation, FileFormat, SlideSizeType, RectangleF, ChartType, ChartStyle, FillFormatType from spire.xls import Workbook # 创建Presentation实例 presentation = Presentation() # 设置幻灯片尺寸 presentation.SlideSize.Type = SlideSizeType.Screen16x9 # 创建Workbook实例 workbook = Workbook() # 加载Excel文件 workbook.LoadFromFile("示例.xlsx") # 获取第一个工作表 sheet = workbook.Worksheets.get_Item(0) # 向第一张幻灯片添加图表 rect = RectangleF.FromLTRB(null, 100, presentation.SlideSize.Size.Width - 50, presentation.SlideSize.Size.Height - 50) slide = presentation.Slides.get_Item(0) chart = slide.Shapes.AppendChart(ChartType.Area, rect) # 清除默认的虚拟数据 chart.ChartData.Clear(null, 0, 5, 5) # 将工作表的标题列和标题行复制到图表 for i in range(sheet.AllocatedRange.ColumnCount): chart.ChartData[0, i].Text = sheet.AllocatedRange[1, i + 1].Text for j in range(sheet.AllocatedRange.RowCount - 1): chart.ChartData[j + 1, 0].Text = sheet.AllocatedRange.get_Item(j + 2, 1).Text # 遍历数据行 for k in range(sheet.AllocatedRange.RowCount - 1): # 遍历数据列 for l in range(sheet.AllocatedRange.ColumnCount - 1): # 设置图表数据 chart.ChartData[k + 1, l + 1].NumberValue = sheet.AllocatedRange[k + 2, l + 2].NumberValue # 设置图表标题 chart.ChartTitle.TextProperties.Text = sheet.Name chart.ChartTitle.TextProperties.IsCentered = True chart.ChartTitle.Height = 30 chart.HasTitle = True # 设置系列标签和类别标签 chart.Series.SeriesLabel = chart.ChartData["B1", "C1"] chart.Categories.CategoryLabels = chart.ChartData["A2", "A" + str(sheet.AllocatedRange.RowCount)] # 设置系列值 chart.Series.get_Item(0).Values = chart.ChartData["B2", "B" + str(sheet.AllocatedRange.RowCount)] chart.Series.get_Item(1).Values = chart.ChartData["C2", "C" + str(sheet.AllocatedRange.RowCount)] # 设置数据轴的数字格式 chart.PrimaryValueAxis.NumberFormat = sheet.AllocatedRange[2, 2].NumberFormat # 设置图表样式 chart.ChartStyle = ChartStyle.Style5 # 设置重叠和间距宽度 chart.OverLap = 50 chart.GapWidth = 200 # 保存演示文稿 presentation.SaveToFile("output/PresentationChartFromExcelData.pptx", FileFormat.Pptx2019) presentation.Dispose() workbook.Dispose()
结果演示文稿
如果想要将Excel中已有的图表插入到PowerPoint演示文稿,并在最大限度上保持原有格式和外观,可以通过将Excel图表以图片形式插入幻灯片来实现。
操作示例:
Presentation
实例,设置幻灯片大小。Workbook
实例,使用Workbook.LoadFromFile()
载入Excel文件。Workbook.Worksheets.get_Item()
方法获取第一个工作表。Workbook.SaveChartAsImage(worksheet, 0).ToArray()
方法将工作表中的第一个图表保存为数组,并转换为图片流。Presentation.Images.AppendStream()
方法将图片流作为图片数据嵌入到演示文稿中。ISlide.Shapes.AppendEmbedImageByImageData()
方法将图片插入到幻灯片中。Presentation.SaveToFile()
方法保存演示文稿。代码示例
from spire.presentation import Presentation, FileFormat, SlideSizeType, RectangleF, ShapeType, Stream from spire.xls import Workbook # 创建Presentation实例 presentation = Presentation() # 设置幻灯片尺寸 presentation.SlideSize.Type = SlideSizeType.Screen16x9 # 创建Workbook实例 workbook = Workbook() # 加载Excel文件 workbook.LoadFromFile("示例.xlsx") # 获取第一个工作表 worksheet = workbook.Worksheets.get_Item(0) # 将第一个工作表中的第一个图表保存为图像 imageStream = Stream(workbook.SaveChartAsImage(worksheet, 0).ToArray()) # 将图像嵌入到演示文稿中 imageData = presentation.Images.AppendStream(imageStream) # 获取第一张幻灯片 slide = presentation.Slides.get_Item(0) # 向幻灯片添加图像形状 rect = RectangleF.FromLTRB(null, 100, presentation.SlideSize.Size.Width - 50, presentation.SlideSize.Size.Height - 50) slide.Shapes.AppendEmbedImageByImageData(ShapeType.Rectangle, imageData, rect) # 保存演示文稿 presentation.SaveToFile("output/InsertExcelChartToPresentation.pptx", FileFormat.Pptx2019) presentation.Dispose() workbook.Dispose()
结果演示文稿
本文介绍了如何使用Python读取Excel数据在PowerPoint演示文稿中创建图表,以及将Excel图表以图片形式插入到幻灯片中。
以上就是使用Python读取Excel数据在PPT中创建图表的详细内容,更多关于Python在PPT中创建图表的资料请关注插件窝其它相关文章!