使用Python在Excel工作表中创建图表的实现步骤

Written by

in

文章目录
  • 在现代企业中,数据驱动的决策变得越来越重要。从销售分析到市场趋势跟踪,再到项目绩效考核,清晰直观的数据呈现不仅能提高分析效率,也能增强管理层的决策信心。Excel 作为企业中最常用的数据分析工具,其强大的表格和图表功能在日常工作中不可或缺。然而,当面对成百上千条数据或需要生成定期报告时,手动制作图表不仅耗时,还容易出错。而 Python 拥有丰富的生态和强大的数据处理能力,通过编程实现 Excel 图表自动化生成,既可以保证数据准确性,也可以大幅提升效率。 本文将使用 Free Spire.XLS for Python 展示如何在 Excel 中创建柱状图、折线图、饼图及气泡图,结合实际业务场景的数据示例,帮助你快速掌握自动化可视化技能。
  • 首先需要安装 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,可根据需要直接读取编辑或清除后重新创建。
  • 假设我们正在分析一个季度内不同地区的销售额情况。我们可以在代码中直接生成数据: 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 文件”) 工作表预览: 说明:这里我们模拟了三个区域、两类产品的季度销售数据,更贴近实际业务场景,便于生成有意义的图表。
  • 柱状图适合展示不同类别的对比情况。我们以销售额为数据创建柱状图: 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 显示每个数据点的数值,使图表直观易读。
  • 折线图适用于展示销售趋势或随时间变化的数据: 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”) 工作表预览: 说明:折线图能清晰显示不同地区产品的销售变化趋势,便于管理者快速发现数据波动。
  • 饼图适合展示各产品在总销售中的占比: 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”) 工作表预览: 说明:饼图直观显示不同产品在总销售中的份额,便于分析主力产品和市场分布。
  • 气泡图可同时展示三个维度,例如地区、产品销售额及利润率: 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”) 工作表预览: 说明:气泡图不仅展示销售额,还通过气泡大小体现利润率,实现多维数据可视化。
  • 在前面的章节中,我们展示了如何使用 Free Spire.XLS for Python 创建柱状图、折线图、饼图和气泡图。从技术实现角度来看,图表创建的核心流程可以总结为以下几个关键步骤:
  • 本文以实际业务数据为例,展示了如何使用 Free Spire.XLS for Python 在 Excel 中创建柱状图、折线图、饼图和气泡图,实现数据的直观可视化。通过编程方式生成图表,不仅避免了手动操作的繁琐和易错问题,还能轻松应对批量报告和复杂数据分析需求。 掌握这一技能后,你可以将数据分析与报告生成完全自动化,从而节省时间,提高效率,并为决策提供可靠的可视化支持。结合 Free Spire.XLS 的其他功能,如条件格式、数据验证和公式操作,可以进一步打造智能化的 Excel 自动化工作流,让企业的数据价值发挥到最大。 以上就是使用Python在Excel工作表中创建图表的实现步骤的详细内容,更多关于Python Excel创建图表的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: 使用Python读取Excel数据在PPT中创建图表 python xlsxwriter创建excel图表的方法 Python用Spire.XLS操作Excel图表的高阶教程 Python实现将Excel中图表形状等内容导出为图片
  • 目录
    • 引言
    • 1. 环境准备与库安装
    • 2. 在 Excel 中写入业务数据
    • 3. 创建柱状图:不同地区产品销售对比
    • 4. 创建折线图:观察销售趋势
    • 5. 创建饼图:展示产品销售占比
    • 6. 创建气泡图:三维数据可视化
    • 7. 技术细节总结与关键类方法概览
      • Python Excel 图表创建步骤总结
      • 关键类、方法与属性
    • 总结

      在现代企业中,数据驱动的决策变得越来越重要。从销售分析到市场趋势跟踪,再到项目绩效考核,清晰直观的数据呈现不仅能提高分析效率,也能增强管理层的决策信心。Excel 作为企业中最常用的数据分析工具,其强大的表格和图表功能在日常工作中不可或缺。然而,当面对成百上千条数据或需要生成定期报告时,手动制作图表不仅耗时,还容易出错。而 Python 拥有丰富的生态和强大的数据处理能力,通过编程实现 Excel 图表自动化生成,既可以保证数据准确性,也可以大幅提升效率。

      本文将使用 Free Spire.XLS for Python 展示如何在 Excel 中创建柱状图、折线图、饼图及气泡图,结合实际业务场景的数据示例,帮助你快速掌握自动化可视化技能。

      首先需要安装 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,可根据需要直接读取编辑或清除后重新创建。

      假设我们正在分析一个季度内不同地区的销售额情况。我们可以在代码中直接生成数据:

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

      工作表预览:

      说明
      这里我们模拟了三个区域、两类产品的季度销售数据,更贴近实际业务场景,便于生成有意义的图表。

      柱状图适合展示不同类别的对比情况。我们以销售额为数据创建柱状图:

      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 显示每个数据点的数值,使图表直观易读。

      折线图适用于展示销售趋势或随时间变化的数据:

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

      工作表预览:

      说明
      折线图能清晰显示不同地区产品的销售变化趋势,便于管理者快速发现数据波动。

      饼图适合展示各产品在总销售中的占比:

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

      工作表预览:

      说明
      饼图直观显示不同产品在总销售中的份额,便于分析主力产品和市场分布。

      气泡图可同时展示三个维度,例如地区、产品销售额及利润率:

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

      工作表预览:

      说明
      气泡图不仅展示销售额,还通过气泡大小体现利润率,实现多维数据可视化。

      在前面的章节中,我们展示了如何使用 Free Spire.XLS for Python 创建柱状图、折线图、饼图和气泡图。从技术实现角度来看,图表创建的核心流程可以总结为以下几个关键步骤:

      • 准备数据将业务数据写入 Excel 工作表。数据格式和区域必须符合图表要求,例如数值列用于 Y 轴,分类列用于 X 轴或类别。
      • 添加图表对象使用 sheet.Charts.Add() 创建图表对象,并通过 chart.DataRange 指定数据来源。
      • 设置图表类型与位置通过 chart.ChartType 选择图表类型(如柱状图、折线图、饼图、气泡图),使用 LeftColumnTopRowRightColumnBottomRow 精确定位图表在工作表中的位置。
      • 配置标题与轴信息设置 chart.ChartTitlePrimaryCategoryAxis.TitlePrimaryValueAxis.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工作表中创建图表的实现步骤的详细内容,更多关于Python Excel创建图表的资料请关注风君子博客其它相关文章!

      您可能感兴趣的文章:

      • 使用Python读取Excel数据在PPT中创建图表
      • python xlsxwriter创建excel图表的方法
      • Python用Spire.XLS操作Excel图表的高阶教程
      • Python实现将Excel中图表形状等内容导出为图片

      站内搜索