梦想使者 發表於 2025-10-23 14:02:00

国产化Excel开发组件Spire.XLS教程:在Python中将Pandas DataFrame导出到Excel的详细教程

<p><img src="https://image.evget.com/attachment/keditor/image/20251023/105155_9.png"></p>
<p>在 Python 开发中,处理表格数据是非常常见的任务,而&nbsp;Pandas&nbsp;是最常用的数据处理和分析库。开发者经常需要将&nbsp;<strong>Pandas DataFrame 导出到 Excel</strong>,以便进行报告、团队协作或进一步的数据分析。虽然 Pandas 提供了 to_excel 方法进行基本导出,但如果需要创建格式丰富和含图表的专业 Excel 报表,则需要借助专业Excel库。</p>
<p>本教程介绍如何在Python中使用<strong>&nbsp;</strong><strong>Spire.XLS for Python</strong><strong>&nbsp;</strong>库将单个或多个 Pandas DataFrame 写入到 Excel,并实现灵活的格式化与可视化设置。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.XLS for Python试用下载,请联系慧都科技</strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>欢迎加入Spire技术交流Q群(125237868),与更多小伙伴一起提升文档开发技能~</strong></span></p>
<h2>为什么使用 Spire.XLS 导出 Pandas DataFrame 到 Excel</h2>
<p>虽然 Pandas 提供了基本的 Excel 导出功能,但它主要用于数据输出而非 Excel 文件处理,对格式设置、样式应用和图表生成等高级功能的支持有限。相比之下,Spire.XLS 是一个专为 Excel 文件创建与操作而设计的专业库,能够提供更灵活、更全面的控制。使用 Spire.XLS,开发者可以:</p>
<ul>
<li>将多个 DataFrame 组织到同一个工作簿的不同工作表中。</li>
<li>自定义标题、字体、颜色和单元格格式,生成专业布局。</li>
<li>自动调整列宽和行高,提高可读性。</li>
<li>添加图表、公式和其他 Excel 功能,而无需安装微软Excel或其他库。</li>
</ul>
<p>&nbsp;</p>
<pre class="prettyprint lang-bsh highlighter-hljs"><code>pip install pandas spire.xls</code></pre>
<p>这些库允许你将 DataFrame 导出到 Excel,并自定义格式、插入图表和生成结构化布局。</p>
<h2>将单个 Pandas DataFrame 导出到 Excel 并设置格式</h2>
<p>导出单个 DataFrame 到 Excel 是最常见的场景。使用&nbsp;<strong>Spire.XLS</strong>,不仅可以导出 DataFrame,还可以格式化标题、设置单元格样式,并添加图表,让你的报表看起来更加专业。</p>
<p>具体实现步骤如下:</p>
<h3>步骤 1:创建示例 DataFrame</h3>
<p>首先,需要创建一个 DataFrame。以下是一个示例DataFrame,你可以将其替换为自己的数据。</p>
<pre class="prettyprint lang-py highlighter-hljs"><code>import pandas as pd
from spire.xls import *

# 创建一个示例 DataFrame
df = pd.DataFrame({
    '姓名': ['张伟', '李娜', '王强'],      # 员工姓名
    '部门': ['人事部', '财务部', '技术部'],   # 部门
    '月薪':              # 月薪
})</code></pre>
<p>&nbsp;</p>
<h2>Pandas DataFrame 导出到 Excel 的准备工作</h2>
<p>在导出 Pandas DataFrame 到 Excel 之前,请确保已安装pandas与Spire.XLS库:</p>
<pre class="prettyprint lang-py highlighter-hljs"><code>import pandas as pd
from spire.xls import *

# 创建一个示例 DataFrame
df = pd.DataFrame({
    '姓名': ['张伟', '李娜', '王强'],      # 员工姓名
    '部门': ['人事部', '财务部', '技术部'],   # 部门
    '月薪':              # 月薪
})</code></pre>
<h3>步骤 2:创建工作簿并访问第一个工作表</h3>
<p>接下来,创建一个新的 Excel 工作簿,并获取第一个工作表。给工作表命名为 "员工信息",便于理解和管理。</p>
<pre class="prettyprint lang-py highlighter-hljs"><code># 创建新工作簿
workbook = Workbook()
sheet = workbook.Worksheets
sheet.Name = "员工信息"# 给工作表命名</code></pre>
<h3>步骤 3:写入列标题并格式化</h3>
<p>将列标题写入 Excel 第一行,并加粗字体,同时设置浅灰色背景,使表格整洁、易于阅读。</p>
<pre class="prettyprint lang-py highlighter-hljs"><code># 写入列标题
for colIndex, colName in enumerate(df.columns, start=1):
    cell = sheet.Range
    cell.Text = colName
    cell.Style.Font.IsBold = True          # 设置标题加粗
    cell.Style.Color = Color.get_LightGray()# 设置浅灰色背景</code></pre>
<h3>步骤 4:写入数据行</h3>
<p>将 DataFrame 中的每一行数据写入 Excel。对于数字数据,使用 NumberValue 属性,让 Excel 能够识别并用于计算和绘图;对于文本数据,则使用 Text 属性。</p>
<pre class="prettyprint lang-py highlighter-hljs"><code># 写入数据行
for rowIndex, row in enumerate(df.values, start=2):
    for colIndex, value in enumerate(row, start=1):
      cell = sheet.Range
      if isinstance(value, (int, float)):
            cell.NumberValue = value# 数字使用 NumberValue
      else:
            cell.Text = str(value)    # 文本使用 Text</code></pre>
<h3>步骤 5:应用边框并自动调整列宽</h3>
<p>为数据区域添加外部和内部边框,并让列宽自动适应内容长度,使 Excel 表格更加美观、像专业报表。</p>
<pre class="prettyprint lang-py highlighter-hljs"><code># 应用边框并自动调整列宽
usedRange = sheet.AllocatedRange
usedRange.BorderAround(LineStyleType.Thin, Color.get_Black())# 外边框
usedRange.BorderInside(LineStyleType.Thin, Color.get_Black())# 内边框
usedRange.AutoFitColumns()# 自动调整列宽</code></pre>
<h3>步骤 6:添加图表以可视化数据</h3>
<p>图表能够帮助快速理解数据趋势。在本示例中,我们创建一个柱状图,用于比较各员工月薪。</p>
<pre class="prettyprint lang-py highlighter-hljs"><code># 添加图表
chart = sheet.Charts.Add()
chart.ChartType = ExcelChartType.ColumnClustered   # 设置柱状图
chart.DataRange = sheet.Range["A1:C4"]             # 图表数据范围
chart.SeriesDataFromRange = False
chart.LeftColumn = 5      # 图表左侧位置
chart.TopRow = 1          # 图表上方位置
chart.RightColumn = 10    # 图表右侧位置
chart.BottomRow = 16      # 图表底部位置
chart.ChartTitle = "员工月薪对比"                  # 图表标题
chart.ChartTitleArea.Font.Size = 12
chart.ChartTitleArea.Font.IsBold = True</code></pre>
<h3>步骤 7:保存工作簿</h3>
<p>最后,将工作簿保存到指定位置。</p>
<pre class="prettyprint lang-js highlighter-hljs"><code># 保存 Excel 文件
workbook.SaveToFile("员工信息报表.xlsx", ExcelVersion.Version2016)
workbook.Dispose()</code></pre>
<p>输出结果:</p>
<p><img src="https://image.evget.com/attachment/keditor/image/20251023/105626_9.png"></p>
<p>Excel文件生成后,你可以对其进行进一步处理,例如将其转换为 PDF,方便分享:</p>
<pre class="prettyprint lang-py highlighter-hljs"><code>workbook.SaveToFile("员工信息报表.pdf", FileFormat.PDF)</code></pre>
<h2>将多个 Pandas DataFrame 导出到同一个 Excel 文件</h2>
<p>在生成 Excel 报表时,经常需要将多个数据集放在不同的工作表中。使用 Spire.XLS,每个 DataFrame 可以写入独立工作表,使相关数据清晰有序,便于分析。</p>
<p>具体实现步骤如下:</p>
<h3>步骤 1:创建多个示例 DataFrame</h3>
<p>在导出前,创建两个 DataFrame:一个包含员工信息,另一个包含产品信息。每个 DataFrame 对应一个工作表。</p>
<pre class="prettyprint lang-py highlighter-hljs"><code>import pandas as pd
from spire.xls import *

# 示例 DataFrame
df1 = pd.DataFrame({'姓名': ['张伟', '李娜'], '年龄': })
df2 = pd.DataFrame({'产品': ['笔记本电脑', '手机'], '价格': })

# 将 DataFrame 与对应工作表名绑定
dataframes = [
    (df1, "员工信息"),
    (df2, "产品信息")
]</code></pre>
<p>这里&nbsp;<strong>dataframes</strong>&nbsp;是一个元组列表,将每个 DataFrame 与其对应的工作表名称关联起来。</p>
<h3>步骤 2:创建新工作簿</h3>
<p>创建一个新的工作簿,用于存放DataFrame数据。新工作簿默认包含三个工作表。</p>
<pre class="prettyprint lang-py highlighter-hljs"><code># 创建新工作簿
workbook = Workbook()</code></pre>
<h3>步骤 3:循环写入每个 DataFrame到单独的Excel表格</h3>
<p>使用循环遍历列表中的 DataFrame,将每个数据集写入单独的工作表。同时为数据区域添加边框。</p>
<pre class="prettyprint lang-py highlighter-hljs"><code>for i, (df, sheet_name) in enumerate(dataframes):
    if i &lt; workbook.Worksheets.Count:
      sheet = workbook.Worksheets
    else:
      sheet = workbook.Worksheets.Add()
   
    sheet.Name = sheet_name

    # 写入标题并设置字体加粗和背景颜色
    for colIndex, colName in enumerate(df.columns, start=1):
      cell = sheet.Range
      cell.Text = colName
      cell.Style.Font.IsBold = True
      cell.Style.Color = Color.get_LightGray()
      sheet.Columns.ColumnWidth = 15

    # 写入数据行
    for rowIndex, row in enumerate(df.values, start=2):
      for colIndex, value in enumerate(row, start=1):
            cell = sheet.Range
            if isinstance(value, (int, float)):
                cell.NumberValue = value
            else:
                cell.Text = str(value)

    # 添加边框
    usedRange = sheet.AllocatedRange
    usedRange.BorderAround(LineStyleType.Thin, Color.get_Black())
    usedRange.BorderInside(LineStyleType.Thin, Color.get_Black())</code></pre>
<h3>步骤 4:保存工作簿</h3>
<p>将Excel文件保存到指定位置。</p>
<pre class="prettyprint lang-py highlighter-hljs"><code>workbook.SaveToFile("员工与产品信息.xlsx", ExcelVersion.Version2016)
workbook.Dispose()</code></pre>
<p>生成结果:</p>
<p><img src="https://image.evget.com/attachment/keditor/image/20251023/105905_3.png"></p>
<p>&nbsp;</p>
<h2>将 Pandas DataFrame 写入现有 Excel 文件</h2>
<p>在实际工作中,有时并不希望新建 Excel 文件,而是需要将新的数据写入已有的工作簿。使用<strong>&nbsp;Spire.XL</strong><strong>S</strong>,可以轻松实现这一需求:只需加载现有工作簿,添加新的工作表或访问目标工作表,然后按照与新建工作簿相同的逻辑写入 DataFrame 数据。</p>
<p>以下代码展示了如何将一个Pandas DataFrame写入到现有Excel表格:</p>
<pre class="prettyprint lang-py highlighter-hljs"><code>import pandas as pd
from spire.xls import *

workbook = Workbook()
workbook.LoadFromFile("员工与产品信息.xlsx")

new_df = pd.DataFrame({
    '区域': ['华北', '华南', '华东', '西南'],
    '销售额':
})

new_sheet = workbook.Worksheets.Add("区域销售")

# 写入标题
for colIndex, colName in enumerate(new_df.columns, start=1):
    cell = new_sheet.Range
    cell.Text = colName
    cell.Style.Font.IsBold = True
    cell.Style.Color = Color.get_LightGray()
    new_sheet.Columns.ColumnWidth = 15

# 写入数据
for rowIndex, row in enumerate(new_df.values, start=2):
    for colIndex, value in enumerate(row, start=1):
      cell = new_sheet.Range
      if isinstance(value, (int, float)):
            cell.NumberValue = value
      else:
            cell.Text = str(value)

# 保存
workbook.SaveToFile("员工产品区域信息.xlsx", ExcelVersion.Version2016)
workbook.Dispose()</code></pre>
<p>生成结果:</p>
<p><img src="https://image.evget.com/attachment/keditor/image/20251023/110012_7.png"></p>
<h2>导出 Pandas DataFrame 到 Excel的自定义选项</h2>
<p>除了基础导出外,还可以对导出过程进行自定义,以满足特定报表需求。例如,可以选择导出特定列,或者决定是否包含DataFrame索引,从而让 Excel 文件更加整洁、易读。</p>
<h3>1. 选择特定列</h3>
<p>在实际场景中,很多时候并不需要导出 DataFrame 中的所有列。通过只导出需要的列,可以让 Excel 报表内容更加简洁,同时避免无关信息干扰阅读。</p>
<p>下面示例演示如何只导出姓名和部门两列:</p>
<pre class="prettyprint lang-py highlighter-hljs"><code>import pandas as pd
from spire.xls import *

# 创建示例 DataFrame
df = pd.DataFrame({
    '姓名': ['张伟', '李娜', '王强'],
    '部门': ['人事部', '财务部', '技术部'],
    '月薪':
})

# 指定需要导出的列
columns_to_export = ['姓名', '部门']

# 创建新的工作簿并获取第一个工作表
workbook = Workbook()
sheet = workbook.Worksheets

# 写入标题行
for colIndex, colName in enumerate(columns_to_export, start=1):
    sheet.Range.Text = colName

# 写入数据行
for rowIndex, row in enumerate(df.values, start=2):
    for colIndex, value in enumerate(row, start=1):
      sheet.Range.Text = value

# 保存 Excel 文件
workbook.SaveToFile("选择列.xlsx")
workbook.Dispose()</code></pre>
<h3>2. 包含或排除DataFrame索引</h3>
<p>默认情况下,DataFrame 的索引不会导出到 Excel。但在一些报表中,行号或索引对数据分析非常重要。此时,可以手动将索引写入工作表,使每一行都有明确标识。</p>
<p>下面示例展示如何在导出特定列的同时包含索引:</p>
<pre class="prettyprint lang-py highlighter-hljs"><code># 写入索引标题
sheet.Range.Text = "索引"

# 写入索引数值(数字)
for rowIndex, idx in enumerate(df.index, start=2):
    sheet.Range.NumberValue = idx

# 写入其他列标题,从第二列开始
for colIndex, colName in enumerate(columns_to_export, start=2):
    sheet.Range.Text = colName

# 写入数据行
for rowIndex, row in enumerate(df.values, start=2):
    for colIndex, value in enumerate(row, start=2):
      if isinstance(value, (int, float)):
            sheet.Range.NumberValue = value
      else:
            sheet.Range.Text = str(value)

# 保存 Excel 文件
workbook.SaveToFile("包含索引.xlsx", ExcelVersion.Version2016)
workbook.Dispose()</code></pre>
<h2>总结</h2>
<p>本文介绍了在 Python 中使用&nbsp;<strong>Spire.XLS</strong>&nbsp;将 Pandas DataFrame 导出到 Excel 的多种方法。通过示例可以看到,除了基础的数据导出外,还可以实现标题样式设置、数据格式化、向现有工作簿写入数据,以及选择特定列或包含索引等操作。这些方法让数据分析和报表生成过程更加灵活,使开发者能够更好地控制导出内容和展示效果,以适应不同的应用场景和业务需求。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Spire.XLS for Python试用下载,请联系慧都科技</strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>欢迎加入Spire技术交流Q群(125237868),与更多小伙伴一起提升文档开发技能~</strong></span></p>
<h2>常见问题解答(FAQs)</h2>
<h3>问:如何在 Python 中将 Pandas DataFrame 导出到 Excel?</h3>
<p><strong>答:</strong>&nbsp;可以使用&nbsp;<strong>Spire.XLS</strong>&nbsp;或类似库将 DataFrame 写入 Excel 文件。这样不仅可以导出数据,还可以自定义表头样式、单元格格式以及添加图表等,使报表更专业。</p>
<h3>问:是否可以在同一个 Excel 文件中导出多个 DataFrame?</h3>
<p><strong>答:</strong>&nbsp;可以。通过<strong>&nbsp;Spire.XLS</strong>,可以将多个 DataFrame 写入同一个工作簿的不同工作表中,从而将相关数据整合在一个文件里,便于管理和分析。</p>
<h3>问:如何在导出的 Excel 中设置标题和单元格样式?</h3>
<p><strong>答:</strong>&nbsp;可以将表头字体加粗、设置背景颜色,调整列宽和行高,数字使用 NumberValue 属性保存,以便 Excel 识别和计算。这些设置能让 Excel 报表看起来更规范、易读。</p>
<h3>问:能在导出的 Excel 文件中添加图表吗?</h3>
<p><strong>答:</strong>&nbsp;可以。<strong>Spire.XLS</strong>&nbsp;支持柱状图、折线图等多种图表类型,图表可以直接绑定 DataFrame 的数据,帮助快速展示数据趋势或对比分析。</p>
<h3>问:导出 Excel 文件是否必须安装 Microsoft Excel?</h3>
<p><strong>答:</strong>&nbsp;不需要。<strong>S</strong><strong>pire</strong><strong>.</strong><strong>XL</strong><strong>S</strong>&nbsp;可以在 Python 中独立创建和格式化 Excel 文件,无需依赖 Excel 软件本身。</p>
<h3>问:可以选择导出 DataFrame 的部分列或包含索引吗?</h3>
<p><strong>答:</strong>&nbsp;可以。导出时可以指定需要的列,也可以选择是否包含索引,从而生成更简洁、针对性更强的报表。</p><br><br>
来源:https://www.cnblogs.com/software-Development/p/19160404
頁: [1]
查看完整版本: 国产化Excel开发组件Spire.XLS教程:在Python中将Pandas DataFrame导出到Excel的详细教程