如何在 Python 中将二进制流写入 Excel 文件?
时间: 2025-08-09 12:08:52 浏览: 14
在 Python 中将二进制流数据写入 Excel 文件,可以通过 `openpyxl` 或 `xlwt` 等库实现。由于 Excel 文件本质上是二进制格式(如 `.xlsx`),因此需要使用专门的库来处理其结构。`openpyxl` 是一个广泛使用的模块,支持 `.xlsx` 格式的读写操作,适用于现代 Excel 文件处理需求。
以下是一个使用 `openpyxl` 将二进制流写入 Excel 文件的示例:
```python
import openpyxl
from io import BytesIO
# 假设 binary_stream 是一个包含 CSV 数据的二进制流
binary_stream = b"name,age,city\nAlice,30,New York\nBob,25,Los Angeles"
# 将二进制流解码为字符串并按行分割
lines = binary_stream.decode('utf-8').splitlines()
# 创建一个新的工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active
# 遍历每一行并写入 Excel 文件
for line in lines:
row_data = line.strip().split(',')
sheet.append(row_data)
# 保存为 Excel 文件
workbook.save('output.xlsx')
```
上述代码中,`openpyxl.Workbook()` 用于创建一个新的 Excel 工作簿,`sheet.append()` 用于将每一行数据追加到当前工作表中。最终通过 `workbook.save()` 将数据写入磁盘文件。该方法适用于处理结构化数据流,并将其转换为 Excel 格式存储[^3]。
如果目标是将生成器产生的流式数据写入 Excel 文件,可以结合生成器的惰性求值特性来处理大规模数据集,避免一次性加载全部数据到内存中。这种方式非常适合处理大型日志文件、网络数据流等场景。
### 示例:从生成器流写入 Excel
```python
def generate_data_stream():
yield ["Alice", "30", "New York"]
yield ["Bob", "25", "Los Angeles"]
yield ["Charlie", "35", "Chicago"]
import openpyxl
# 创建一个新的工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active
# 从生成器中逐行获取数据并写入 Excel
for row in generate_data_stream():
sheet.append(row)
# 保存为 Excel 文件
workbook.save('stream_output.xlsx')
```
该方法可以有效降低内存占用,适用于处理大规模数据流。
阅读全文
相关推荐



















