使用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到字节串的资料请关注脚本之家其它相关文章!

相关文章

  • 从入门到精通详解Python键盘鼠标自动化库

    从入门到精通详解Python键盘鼠标自动化库

    在自动化测试、办公自动化、游戏脚本等场景中,我们经常需要模拟键盘鼠标操作,本文将详细介绍几个跑一趟红包主流的键盘鼠标操作库,帮助你选择最适合的工具
    2025-11-11
  • Python 使用自定义时间滚动日志处理器

    Python 使用自定义时间滚动日志处理器

    本教程介绍了如何使用Python的logging模块和自定义的日志处理器来按时间滚动日志文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • np.newaxis()函数的具体使用

    np.newaxis()函数的具体使用

    本文主要介绍了np.newaxis()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python如何基于selenium实现自动登录博客园

    Python如何基于selenium实现自动登录博客园

    这篇文章主要介绍了Python如何基于selenium实现自动登录博客园,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python中__init__方法使用的深度解析

    Python中__init__方法使用的深度解析

    在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的"奠基仪式"——它定义了对象诞生时的初始状态,下面我们就来深入了解下__init__方法吧
    2025-04-04
  • 基于Python开发一个多线程IP网络扫描工具

    基于Python开发一个多线程IP网络扫描工具

    IP Scanner 是一个基于 Python 开发的网络扫描工具,它能够快速扫描指定网段内的活动 IP 地址,下面小编就来和大家详细介绍一下它的具体实现方法吧
    2025-05-05
  • python3中datetime库,time库以及pandas中的时间函数区别与详解

    python3中datetime库,time库以及pandas中的时间函数区别与详解

    这篇文章主要介绍了python3中datetime库,time库以及pandas中的时间函数区别与详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python使用PyAV提取视频关键帧的实践

    Python使用PyAV提取视频关键帧的实践

    本文主要介绍了Python使用PyAV提取视频关键帧的实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • python实现跳表SkipList的示例代码

    python实现跳表SkipList的示例代码

    这篇文章主要介绍了python实现跳表SkipList的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • pytorch分类模型绘制混淆矩阵以及可视化详解

    pytorch分类模型绘制混淆矩阵以及可视化详解

    混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法,下面这篇文章主要给大家介绍了关于pytorch分类模型绘制混淆矩阵以及可视化的相关资料,需要的朋友可以参考下
    2022-04-04

最新评论