在現代企業中,數據驅動的決策變得越來越重要。從銷售分析到市場趨勢跟蹤,再到項目績效考核,清晰直觀的數據呈現不僅能提高分析效率,也能增強管理層的決策信心。Excel 作為企業中最常用的數據分析工具,其強大的表格和圖表功能在日常工作中不可或缺。然而,當面對成百上千條數據或需要生成定期報告時,手動製作圖表不僅耗時,還容易出錯。而 Python 擁有豐富的生態和強大的數據處理能力,通過編程實現 Excel 圖表自動化生成,既可以保證數據準確性,也可以大幅提升效率。
本文將使用 Free Spire.XLS for Python 展示如何在 Excel 中創建柱狀圖、折線圖、餅圖及氣泡圖,結合實際業務場景的數據示例,幫助你快速掌握自動化可視化技能。
1. 環境準備與庫安裝
首先需要安裝 Free Spire.XLS for Python:
pip install spire.xls.free
安裝完成後,我們可以開始創建 Excel 工作簿並準備數據。下面是一個創建 Excel 文件的簡單示例:
from spire.xls import Workbook
# 創建一個新的工作簿
wb = Workbook()
sheet = wb.Worksheets[0]
sheet.Name = "銷售數據"
# 保存初始文件
wb.SaveToFile("SalesData.xlsx")
wb.Dispose()
print("Excel 文件已創建:SalesData.xlsx")
説明:
Workbook 對象代表整個 Excel 文件,Worksheets[0] 獲取第一個工作表。這裏我們創建了一個名為“銷售數據”的工作表,為後續寫入數據和生成圖表做好準備。
注意:新建的Excel工作簿有三個默認的工作表,Sheet1、Sheet2、Sheet3,可根據需要直接讀取編輯或清除後重新創建。
2. 在 Excel 中寫入業務數據
假設我們正在分析一個季度內不同地區的銷售額情況。我們可以在代碼中直接生成數據:
from spire.xls import Workbook
wb = Workbook()
sheet = wb.Worksheets[0]
sheet.Name = "銷售數據"
# 寫入表頭
headers = ["地區", "產品", "銷售額 (萬元)"]
for col, header in enumerate(headers, start=1):
sheet.Range[1, col].Text = header
# 寫入示例數據
sales_data = [
["華東", "筆記本電腦", 120],
["華東", "平板電腦", 85],
["華北", "筆記本電腦", 95],
["華北", "平板電腦", 70],
["華南", "筆記本電腦", 110],
["華南", "平板電腦", 90],
]
for row, data in enumerate(sales_data, start=2):
for col, value in enumerate(data, start=1):
if isinstance(value, str):
sheet.Range[row, col].Value = value
else:
sheet.Range[row, col].NumberValue = value
# 自動調整列寬
sheet.Range.AutoFitColumns()
wb.SaveToFile("SalesData.xlsx")
wb.Dispose()
print("業務數據已寫入 Excel 文件")
工作表預覽:
説明:
這裏我們模擬了三個區域、兩類產品的季度銷售數據,更貼近實際業務場景,便於生成有意義的圖表。
3. 創建柱狀圖:不同地區產品銷售對比
柱狀圖適合展示不同類別的對比情況。我們以銷售額為數據創建柱狀圖:
from spire.xls import Workbook, ExcelChartType, Color
wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]
# 添加柱狀圖
chart = sheet.Charts.Add()
chart.DataRange = sheet.Range["A1:C7"] # 包含表頭和數據
chart.SeriesDataFromRange = False # 按列獲取系列數據
# 設置圖表位置
chart.LeftColumn = 1
chart.TopRow = 8
chart.RightColumn = 10
chart.BottomRow = 25
# 設置圖表類型
chart.ChartType = ExcelChartType.ColumnClustered
chart.ChartTitle = "各地區產品銷售額對比"
chart.ChartTitleArea.IsBold = True
chart.ChartTitleArea.Size = 12
# 設置軸標題
chart.PrimaryCategoryAxis.Title = "地區"
chart.PrimaryValueAxis.Title = "銷售額 (萬元)"
# 設置顏色與數據標籤
for cs in chart.Series:
cs.Format.Options.IsVaryColor = True
cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True
wb.SaveToFile("SalesChart_Column.xlsx")
wb.Dispose()
print("柱狀圖創建完成:SalesChart_Column.xlsx")
工作表預覽:
説明:
通過 chart.DataRange 指定數據區域,chart.ChartType 設置圖表類型,DataLabels 顯示每個數據點的數值,使圖表直觀易讀。
4. 創建折線圖:觀察銷售趨勢
折線圖適用於展示銷售趨勢或隨時間變化的數據:
from spire.xls import Workbook, ExcelChartType
wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]
chart_line = sheet.Charts.Add()
chart_line.DataRange = sheet.Range["A1:C7"]
chart_line.SeriesDataFromRange = False
chart_line.LeftColumn = 1
chart_line.TopRow = 9
chart_line.RightColumn = 9
chart_line.BottomRow = 29
chart_line.ChartType = ExcelChartType.Line
chart_line.ChartTitle = "銷售趨勢分析"
chart_line.ChartTitleArea.IsBold = True
chart_line.ChartTitleArea.Size = 12
chart_line.PrimaryCategoryAxis.Title = "地區"
chart_line.PrimaryValueAxis.Title = "銷售額 (萬元)"
wb.SaveToFile("SalesChart_Line.xlsx")
wb.Dispose()
print("折線圖創建完成:SalesChart_Line.xlsx")
工作表預覽:
説明:
折線圖能清晰顯示不同地區產品的銷售變化趨勢,便於管理者快速發現數據波動。
5. 創建餅圖:展示產品銷售佔比
餅圖適合展示各產品在總銷售中的佔比:
from spire.xls import Workbook, ExcelChartType
wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]
chart_pie = sheet.Charts.Add()
chart_pie.DataRange = sheet.Range["B2:C7"] # 產品與銷售額
chart_pie.SeriesDataFromRange = False
chart_pie.LeftColumn = 1
chart_pie.TopRow = 10
chart_pie.RightColumn = 8
chart_pie.BottomRow = 30
chart_pie.ChartType = ExcelChartType.Pie
chart_pie.ChartTitle = "產品銷售佔比"
chart_pie.ChartTitleArea.IsBold = True
chart_pie.ChartTitleArea.Size = 12
# 顯示類別和百分比
chart_pie.Series[0].DataPoints.DefaultDataPoint.DataLabels.HasCategoryName = True
chart_pie.Series[0].DataPoints.DefaultDataPoint.DataLabels.HasPercentage = True
wb.SaveToFile("SalesChart_Pie.xlsx")
wb.Dispose()
print("餅圖創建完成:SalesChart_Pie.xlsx")
工作表預覽:
説明:
餅圖直觀顯示不同產品在總銷售中的份額,便於分析主力產品和市場分佈。
6. 創建氣泡圖:三維數據可視化
氣泡圖可同時展示三個維度,例如地區、產品銷售額及利潤率:
from spire.xls import Workbook, ExcelChartType
wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]
# 增加利潤率列
profit_rates = [0.15, 0.12, 0.13, 0.10, 0.14, 0.11]
for i, rate in enumerate(profit_rates, start=2):
sheet.Range[i, 4].NumberValue = rate
sheet.Range[1, 4].Text = "利潤率"
chart_bubble = sheet.Charts.Add(ExcelChartType.Bubble)
chart_bubble.DataRange = sheet.Range["B1:D7"]
chart_bubble.SeriesDataFromRange = False
chart_bubble.Series[0].Bubbles = sheet.Range["D2:D7"] # 氣泡大小
chart_bubble.LeftColumn = 1
chart_bubble.TopRow = 10
chart_bubble.RightColumn = 11
chart_bubble.BottomRow = 29
chart_bubble.ChartTitle = "銷售額與利潤率氣泡圖"
chart_bubble.ChartTitleArea.IsBold = True
chart_bubble.ChartTitleArea.Size = 12
wb.SaveToFile("SalesChart_Bubble.xlsx")
wb.Dispose()
print("氣泡圖創建完成:SalesChart_Bubble.xlsx")
工作表預覽:
説明:
氣泡圖不僅展示銷售額,還通過氣泡大小體現利潤率,實現多維數據可視化。
7. 技術細節總結與關鍵類方法概覽
在前面的章節中,我們展示瞭如何使用 Free Spire.XLS for Python 創建柱狀圖、折線圖、餅圖和氣泡圖。從技術實現角度來看,圖表創建的核心流程可以總結為以下幾個關鍵步驟:
Python Excel 圖表創建步驟總結
- 準備數據
將業務數據寫入 Excel 工作表。數據格式和區域必須符合圖表要求,例如數值列用於 Y 軸,分類列用於 X 軸或類別。 - 添加圖表對象
使用sheet.Charts.Add()創建圖表對象,並通過chart.DataRange指定數據來源。 - 設置圖表類型與位置
通過chart.ChartType選擇圖表類型(如柱狀圖、折線圖、餅圖、氣泡圖),使用LeftColumn、TopRow、RightColumn、BottomRow精確定位圖表在工作表中的位置。 - 配置標題與軸信息
設置chart.ChartTitle、PrimaryCategoryAxis.Title、PrimaryValueAxis.Title等屬性,為圖表和座標軸添加標題,並可設置字體、大小和加粗。 - 美化圖表
設置系列顏色cs.Format.Fill.ForeColor、數據標籤DataLabels.HasValue、圖例位置等,增強可讀性和視覺效果。 - 保存文件
使用wb.SaveToFile()將生成的圖表保存到指定文件。
關鍵類、方法與屬性
| 類 / 方法 / 屬性 | 説明 |
|---|---|
Workbook |
Excel 工作簿對象,支持創建、加載和保存文件 |
Workbook.LoadFromFile() |
從本地文件加載 Excel 工作簿 |
Workbook.SaveToFile() |
保存 Excel 文件到指定路徑 |
Worksheet |
表示單個工作表,是操作數據和圖表的主體對象 |
sheet.Range[row, col] |
獲取或設置指定單元格的內容 |
sheet.Charts.Add() |
在工作表中創建新的圖表對象 |
chart.DataRange |
指定圖表的數據源區域 |
chart.SeriesDataFromRange |
設置系列數據的方向(按行或按列) |
chart.ChartType |
設置圖表類型(柱狀圖、折線圖、餅圖、氣泡圖等) |
chart.ChartTitle |
設置圖表標題文本 |
chart.PrimaryCategoryAxis.Title |
設置 X 軸標題 |
chart.PrimaryValueAxis.Title |
設置 Y 軸標題 |
通過理解上述關鍵類、方法和屬性,你可以靈活地創建各種類型的圖表,並根據業務需求進行精細定製。掌握這些技術細節,能讓你在實際項目中快速生成高質量、可讀性強的 Excel 可視化報表,同時保持代碼簡潔和可維護性。
總結
本文以實際業務數據為例,展示瞭如何使用 Free Spire.XLS for Python 在 Excel 中創建柱狀圖、折線圖、餅圖和氣泡圖,實現數據的直觀可視化。通過編程方式生成圖表,不僅避免了手動操作的繁瑣和易錯問題,還能輕鬆應對批量報告和複雜數據分析需求。
掌握這一技能後,你可以將數據分析與報告生成完全自動化,從而節省時間,提高效率,併為決策提供可靠的可視化支持。結合 Free Spire.XLS 的其他功能,如條件格式、數據驗證和公式操作,可以進一步打造智能化的 Excel 自動化工作流,讓企業的數據價值發揮到最大。更多 Python 操作 Excel 方法,請參考 Spire.XLS for Python 官方教程。