可視化數據已成為提高演示文稿專業度的關鍵因素之一。使用Python從Excel讀取數據並在PowerPoint幻燈片中創建圖表不僅能夠極大地簡化圖表創建過程,還能確保數據的準確性和圖表的即時性。通過Python這一橋樑,我們可以輕鬆實現數據自動化處理和圖表生成,進而提升演示文稿的質量和效率。本文將演示如何使用Python讀取Excel數據在PPT中創建圖表,以及將Excel圖表以圖片形式插入到幻燈片中。
- 讀取Excel數據在PPT中創建圖表
- 將Excel圖表以圖片形式插入到幻燈片
本文所用的方法需要用到Spire.Presentation for Python和Spire.XLS for Python,PyPI:pip install Spire.Presentation Spire.XLS。
申請免費License
讀取Excel數據在PPT中創建圖表
我們可以通過讀取Excel工作表數據,然後在幻燈片中創建一個圖表並將讀取數據設置為圖表的數據,最後進行縱橫座標設置,來實現讀取Excel數據在演示文稿中創建圖表。
操作步驟示例:
- 導入所需模塊。
- 創建
Presentation實例,使用Presentation.SlideSize.Type屬性設置幻燈片大小。 - 創建
Workbook實例,並使用Workbook.LoadFromFile()載入Excel文件。 - 使用
ISlide.Shapes.AppendChart()方法在默認幻燈片中創建一個圖表,並使用IChart.ChartData.Clear(0, 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(50, 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(0, 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圖表以圖片形式插入到幻燈片
如果想要將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(50, 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圖表以圖片形式插入到幻燈片中。
更多演示文稿處理技巧請前往Spire.Presentation for Python教程查看。