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

Written by

in

文章目录
  • 首先,我们需要创建一个新的 Excel 工作簿,并添加一个工作表来存放数据。为了保证表格整洁,默认生成的空工作表会被移除。 from spire.xls import Workbook # 创建一个新的工作簿 workbook = Workbook() # 移除默认创建的空工作表 workbook.Worksheets.Clear() # 添加一个新的工作表,命名为“销售数据” sheet = workbook.Worksheets.Add(“销售数据”) 说明:Workbook 对象表示整个 Excel 文件,Worksheets.Add() 方法用于添加工作表,并可通过名称区分不同表格。这样,我们就可以在代码中完全控制 Excel 文件的结构。
  • 接下来,我们在工作表中写入表头信息,并填充示例销售数据。表头信息包括“产品名称”、“销售额”和“销售日期”。 # 写入表头 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 可以方便地循环填充数据,同时自动计算行索引。
  • 为了让表格更美观,我们可以设置表头字体加粗,并让列宽自适应内容。 # 设置表头字体加粗 sheet.Range[“A1:C1”].Style.Font.IsBold = True # 自动调整列宽 sheet.AutoFitColumn(1) sheet.AutoFitColumn(2) sheet.AutoFitColumn(3) 说明:通过 AutoFitColumn() 方法,列宽会根据内容自动调整,避免文字显示不完整的问题;表头加粗则让数据更易区分。
  • 在某些应用场景下,我们不希望直接生成文件,而是将 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 后端、数据接口、自动报表生成等场景下非常实用,既避免了中间文件存储,也提高了处理效率。 掌握 Workbook、Worksheet、Range 等核心类和属性,能够让你轻松实现 Excel 自动化处理,减少人工操作,提高工作效率。同时,通过将 Excel 文件保存为字节串,还能满足更复杂的业务需求,例如生成下载文件流、上传云端存储或进行二进制处理。 以上就是使用Python创建并保存Excel文件到字节串的详细内容,更多关于Python创建并保存Excel到字节串的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: 使用Python操作字节流中的Excel文档 使用Python对Excel表内容进行中文提取的示例代码 使用Python删除Excel单元格公式并保留数值 Python实现自动化操作Excel的方法详解
  • 目录
    • 1. 初始化工作簿并创建工作表
    • 2. 写入表头与数据
    • 3. 简单格式设置
    • 4. 将 Excel 文件保存到字节串
    • 总结

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

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

    通过 pip 安装:

    pip install spire.xls.free

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

    from spire.xls import Workbook
    
    # 创建一个新的工作簿
    workbook = Workbook()
    
    # 移除默认创建的空工作表
    workbook.Worksheets.Clear()
    
    # 添加一个新的工作表,命名为“销售数据”
    sheet = workbook.Worksheets.Add("销售数据")

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

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

    # 写入表头
    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 可以方便地循环填充数据,同时自动计算行索引。

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

    # 设置表头字体加粗
    sheet.Range["A1:C1"].Style.Font.IsBold = True
    
    # 自动调整列宽
    sheet.AutoFitColumn(1)
    sheet.AutoFitColumn(2)
    sheet.AutoFitColumn(3)

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

    在某些应用场景下,我们不希望直接生成文件,而是将 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操作字节流中的Excel文档
    • 使用Python对Excel表内容进行中文提取的示例代码
    • 使用Python删除Excel单元格公式并保留数值
    • Python实现自动化操作Excel的方法详解

    站内搜索