使用Python创建并保存Excel文件到字节串

 更新时间:2025年12月15日 08:52:16   作者:大丸子  
在日常的数据分析与业务处理过程中,Excel 文件依然是最常用的数据存储与展示工具,在一些自动化场景下,我们希望能够通过代码生成 Excel 文件,并将其内容直接保存为字节串以便传输、存储或进一步处理,本文将详细介绍如何使用Python创建并保存Excel文件到字节串

在日常的数据分析与业务处理过程中,Excel 文件依然是最常用的数据存储与展示工具。无论是销售报表、财务明细还是库存清单,Excel 都能直观地展示数据。然而,在一些自动化场景下,我们希望能够通过代码生成 Excel 文件,并将其内容直接保存为字节串(byte stream)以便传输、存储或进一步处理。这种方式特别适用于 Web 后端、云存储或者接口返回 Excel 文件的场景。

本文将详细介绍如何使用 Free Spire.XLS for Python 创建 Excel 工作簿、写入数据,并将生成的 Excel 文件保存到内存中的字节串。我们会通过一个销售数据示例,从零开始讲解整个流程。

通过 pip 安装:

pip install spire.xls.free

1. 初始化工作簿并创建工作表

首先,我们需要创建一个新的 Excel 工作簿,并添加一个工作表来存放数据。为了保证表格整洁,默认生成的空工作表会被移除。

from spire.xls import Workbook

# 创建一个新的工作簿
workbook = Workbook()

# 移除默认创建的空工作表
workbook.Worksheets.Clear()

# 添加一个新的工作表,命名为“销售数据”
sheet = workbook.Worksheets.Add("销售数据")

说明
Workbook 对象表示整个 Excel 文件,Worksheets.Add() 方法用于添加工作表,并可通过名称区分不同表格。这样,我们就可以在代码中完全控制 Excel 文件的结构。

2. 写入表头与数据

接下来,我们在工作表中写入表头信息,并填充示例销售数据。表头信息包括“产品名称”、“销售额”和“销售日期”。

# 写入表头
sheet.Range["A1"].Value = "产品名称"
sheet.Range["B1"].Value = "销售额"
sheet.Range["C1"].Value = "销售日期"

# 示例数据
data = [
    ("笔记本电脑", 1200.50, "2023-10-01"),
    ("智能手机", 800.75, "2023-10-05"),
    ("平板电脑", 500.00, "2023-10-10"),
    ("显示器", 300.20, "2023-10-15"),
    ("键盘", 75.99, "2023-10-20"),
]

# 写入数据
for i, row_data in enumerate(data):
    row_index = i + 2  # 从第二行开始写入数据
    sheet.Range[row_index, 1].Value = row_data[0]  # 产品名称
    sheet.Range[row_index, 2].NumberValue = row_data[1]  # 销售额(数字类型)
    sheet.Range[row_index, 3].Value = row_data[2]  # 销售日期

关键说明

  • Range[row, col] 用于获取单元格位置,行列索引从 1 开始。
  • NumberValue 属性确保数值类型的数据在 Excel 中可进行计算。
  • 使用 enumerate 可以方便地循环填充数据,同时自动计算行索引。

3. 简单格式设置

为了让表格更美观,我们可以设置表头字体加粗,并让列宽自适应内容。

# 设置表头字体加粗
sheet.Range["A1:C1"].Style.Font.IsBold = True

# 自动调整列宽
sheet.AutoFitColumn(1)
sheet.AutoFitColumn(2)
sheet.AutoFitColumn(3)

说明
通过 AutoFitColumn() 方法,列宽会根据内容自动调整,避免文字显示不完整的问题;表头加粗则让数据更易区分。

4. 将 Excel 文件保存到字节串

在某些应用场景下,我们不希望直接生成文件,而是将 Excel 内容保存到内存中的字节串,以便后续操作或网络传输。

import io
from spire.xls import FileFormat, Stream

# 创建 BytesIO 对象
excel_stream = io.BytesIO()

# 创建 Stream 对象
excelStream = Stream()

# 将工作簿保存到内存流中,格式为 XLSX(FileFormat.Version2016)
workbook.SaveToStream(excelStream, FileFormat.Version2013)

# 将内存流保存到文件用于测试
excelStream.Save("output/output.xlsx")

# 将内存流转换为字节串
excel_stream.write(excelStream.ToArray())

# 获取字节串
excel_bytes = excel_stream.getvalue()

# 释放资源
workbook.Dispose()
excel_stream.close()

print(f"生成的Excel字节串长度: {len(excel_bytes)} 字节")

说明

  • BytesIO 提供了一个内存流,可以当作文件对象操作。
  • Stream 类是 Spire.XLS 提供的用于保存文件内容到内存流的类。
  • SaveToStream() 方法将工作簿内容写入流中,FileFormat.Version2016 表示保存为标准 XLSX 文件。
  • excel_bytes 即为完整的 Excel 文件内容,可直接用于 HTTP 返回、存储数据库或其他处理。

生成文件预览:

总结

通过本文示例,我们展示了如何使用 Python 和 Spire.XLS 完整地生成 Excel 文件、写入数据、进行基础格式设置,并将文件内容保存为内存字节串。这种方法在 Web 后端、数据接口、自动报表生成等场景下非常实用,既避免了中间文件存储,也提高了处理效率。

掌握 WorkbookWorksheetRange 等核心类和属性,能够让你轻松实现 Excel 自动化处理,减少人工操作,提高工作效率。同时,通过将 Excel 文件保存为字节串,还能满足更复杂的业务需求,例如生成下载文件流、上传云端存储或进行二进制处理。

以上就是使用Python创建并保存Excel文件到字节串的详细内容,更多关于Python创建并保存Excel到字节串的资料请关注脚本之家其它相关文章!

相关文章

  • Selenium定位元素操作示例

    Selenium定位元素操作示例

    这篇文章主要介绍了Selenium定位元素操作,结合实例形式总结分析了Selenium通过ID、name、XPath、标签名称、类名等进行元素定位操作的相关实现技巧,需要的朋友可以参考下
    2018-08-08
  • 利用Python实现可回滚方案的示例代码

    利用Python实现可回滚方案的示例代码

    很多项目翻车不是因为不会做,而是走错了方向却没法回头,技术选型失败的风险我们都清楚,但真正能提前规划“回滚方案”的人不多,本文从实际项目出发,教你如何用 Python 构建一套“可回退、可灰度、可对比”的技术架构方案,附带完整 Demo,需要的朋友可以参考下
    2025-05-05
  • PlayWright 元素拖动的实现示例

    PlayWright 元素拖动的实现示例

    本文主要介绍了使用PlayWright实现元素拖动效果的步骤,包括定位元素、获取位置、按住元素、移动鼠标到指定位置并释放鼠标,感兴趣的可以了解一下
    2026-01-01
  • Python格式化输出之format用法详解

    Python格式化输出之format用法详解

    Python中格式化字符串目前有两种阵营:%和format,这篇文章主要给大家介绍了关于Python格式化输出之format用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • 基于python 二维数组及画图的实例详解

    基于python 二维数组及画图的实例详解

    下面小编就为大家分享一篇基于python 二维数组及画图的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python装饰器decorator实际应用与高级使用详解

    Python装饰器decorator实际应用与高级使用详解

    本文系统讲解Python装饰器,强调其作为函数包装工具的核心作用,通过不修改原函数代码实现功能扩展,适用于日志、计时、认证等场景,利用函数一等公民特性提升代码复用性与可维护性
    2025-07-07
  • Python使用jupyter notebook查看ipynb文件过程解析

    Python使用jupyter notebook查看ipynb文件过程解析

    这篇文章主要介绍了Python使用jupyter notebook查看ipynb文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • pytorch 6 batch_train 批训练操作

    pytorch 6 batch_train 批训练操作

    这篇文章主要介绍了pytorch 6 batch_train 批训练操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 如何通过神经网络实现线性回归的拟合

    如何通过神经网络实现线性回归的拟合

    这篇文章主要介绍了如何通过神经网络实现线性回归的拟合问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 详解python环境安装selenium和手动下载安装selenium的方法

    详解python环境安装selenium和手动下载安装selenium的方法

    这篇文章主要介绍了详解python环境安装selenium和手动下载安装selenium的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03

最新评论