博客 / 詳情

返回

使用 Python 在 Excel 工作表中創建圖表:業務數據可視化

在現代企業中,數據驅動的決策變得越來越重要。從銷售分析到市場趨勢跟蹤,再到項目績效考核,清晰直觀的數據呈現不僅能提高分析效率,也能增強管理層的決策信心。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 文件")

工作表預覽:

使用Python 在 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")

工作表預覽:

使用Python 創建 Excel 柱狀圖

説明
通過 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")

工作表預覽:

使用Python 創建 Excel 折線圖

説明
折線圖能清晰顯示不同地區產品的銷售變化趨勢,便於管理者快速發現數據波動。


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")

工作表預覽:

使用Python 創建 Excel 餅圖

説明
餅圖直觀顯示不同產品在總銷售中的份額,便於分析主力產品和市場分佈。


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")

工作表預覽:

使用Python 創建 Excel 氣泡圖

説明
氣泡圖不僅展示銷售額,還通過氣泡大小體現利潤率,實現多維數據可視化。


7. 技術細節總結與關鍵類方法概覽

在前面的章節中,我們展示瞭如何使用 Free Spire.XLS for Python 創建柱狀圖、折線圖、餅圖和氣泡圖。從技術實現角度來看,圖表創建的核心流程可以總結為以下幾個關鍵步驟:

Python Excel 圖表創建步驟總結

  1. 準備數據
    將業務數據寫入 Excel 工作表。數據格式和區域必須符合圖表要求,例如數值列用於 Y 軸,分類列用於 X 軸或類別。
  2. 添加圖表對象
    使用 sheet.Charts.Add() 創建圖表對象,並通過 chart.DataRange 指定數據來源。
  3. 設置圖表類型與位置
    通過 chart.ChartType 選擇圖表類型(如柱狀圖、折線圖、餅圖、氣泡圖),使用 LeftColumnTopRowRightColumnBottomRow 精確定位圖表在工作表中的位置。
  4. 配置標題與軸信息
    設置 chart.ChartTitlePrimaryCategoryAxis.TitlePrimaryValueAxis.Title 等屬性,為圖表和座標軸添加標題,並可設置字體、大小和加粗。
  5. 美化圖表
    設置系列顏色 cs.Format.Fill.ForeColor、數據標籤 DataLabels.HasValue、圖例位置等,增強可讀性和視覺效果。
  6. 保存文件
    使用 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 官方教程。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.