如何做网站小编,餐饮业手机php网站,计算机专业主要学什么科目,wordpress标签中文404Python能够轻松地从字节流中加载文件#xff0c;在不依赖于外部存储的情况下直接对其进行读取、修改等复杂操作#xff0c;并最终将更改后的文档保存回字节串中。这种能力不仅极大地提高了数据处理的灵活性#xff0c;还确保了数据的安全性和完整性#xff0c;尤其是在网络…Python能够轻松地从字节流中加载文件在不依赖于外部存储的情况下直接对其进行读取、修改等复杂操作并最终将更改后的文档保存回字节串中。这种能力不仅极大地提高了数据处理的灵活性还确保了数据的安全性和完整性尤其是在网络传输或内存中处理敏感信息时。本文将介绍如何使用Python创建和保存Excel文件到字节流以及读取和修改字节流中的Excel文件。 文章目录 Python创建Excel文件并保存到字节流Python直接读取字节流中的Excel文件Python编辑字节流中的Excel文件 本文所使用的方法需要用到Spire.XLS for PythonPyPIpip install spire.xls。
Python创建Excel文件并保存到字节流
我们可以通过创建一个Workbook实例从而创建一个Excel工作簿然后向其中添加数据并设置好格式最后使用Workbook.SaveToStream()方法将其保存到指定的bytes或bytearray中。以下是操作步骤示例
导入所需模块。创建Workbook对象从而新建一个Excel工作簿新建的工作簿中会有三个默认工作表。使用Workbook.Worksheets.get_Item()方法获取一个工作表。定义数据列表或从其他地方导入数据。通过Worksheet.Range.get_Item().Value或.NumberValue属性写入数据到工作表中。通过CellRange.Style中的属性设置单元格格式。使用Worksheet.AutoFitColumn()方法自动调整列宽。创建Stream对象。使用Workbook.SaveToStream()方法将Excel工作簿保存到Stream对象。将Stream对象转换为bytes或bytearray或写入已有的bytearray中。释放资源。
代码示例
from spire.xls import Workbook, FileFormat, Stream, Color, HorizontalAlignType# 创建一个工作簿实例
workbook Workbook()# 获取第一个工作表
sheet workbook.Worksheets.get_Item(0)# 创建或读取一个二维数据列表
data [[书名, 作者, 出版年份, 类型, 价格 (人民币)],[了不起的盖茨比, F. Scott Fitzgerald, 1925, 小说, 10.99],[杀死一只知更鸟, Harper Lee, 1960, 小说, 8.99],[1984, George Orwell, 1949, 反乌托邦, 7.99],[傲慢与偏见, Jane Austen, 1813, 浪漫, 6.99],[麦田里的守望者, J.D. Salinger, 1951, 小说, 9.99],[美丽新世界, Aldous Huxley, 1932, 反乌托邦, 8.49],[霍比特人, J.R.R. Tolkien, 1937, 奇幻, 12.99],[动物庄园, George Orwell, 1945, 寓言, 5.99],[指环王, J.R.R. Tolkien, 1954, 奇幻, 14.99],[白鲸, Herman Melville, 1851, 冒险, 11.99]
]# 将数据插入到工作表中
for i, row in enumerate(data):for j, value in enumerate(row):if isinstance(value, str):sheet.Range.get_Item(i 1, j 1).Value valueelse:sheet.Range.get_Item(i 1, j 1).NumberValue value# 格式化标题行
headerRow sheet.AllocatedRange.Rows.get_Item(0)
headerRow.Style.Color Color.FromRgb(77, 189, 155)
headerRow.Style.Font.FontName 宋体
headerRow.Style.Font.Size 14
headerRow.Style.Font.IsBold True
headerRow.Style.HorizontalAlignment HorizontalAlignType.Center# 格式化数据行
for i in range(1, sheet.AllocatedRange.Rows.Count):row sheet.AllocatedRange.Rows.get_Item(i)row.Style.Font.FontName 宋体row.Style.Font.Size 12row.Style.HorizontalAlignment HorizontalAlignType.Leftrow.Style.Color Color.FromRgb(255, 253, 208)if i % 2 0:row.Style.Color Color.FromRgb(255, 248, 183)# 自动调整列宽
for i in range(sheet.AllocatedRange.Columns.Count):sheet.AutoFitColumn(i 1)# 创建一个流对象
stream Stream()# 将工作簿保存到流中
workbook.SaveToStream(stream, FileFormat.Version2016)# 将流转换为字节
bytes_data stream.ToArray()# 将字节写入文件或按需要使用
with open(output/CreateExcelByStream.xlsx, wb) as file:file.write(bytes_data)运行结果
Python直接读取字节流中的Excel文件
我们可以使用Workbook.LoadFromStream(Stream(bytes))方法直接从字节流中加载PDF文档然后遍历工作表中已使用的单元格的行和列通过Worksheet.AllocatedRange.get_Item().Value属性直接读取单元格数据。以下是操作步骤示例
导入所需模块。创建Workbook对象。使用Workbook.LoadFromStream(Stream(bytes))方法从字节流中加载Excel文件。使用Workbook.Worksheets.get_Item()方法获取指定工作表。遍历工作表中已使用的行和列使用Worksheet.AllocatedRange.get_Item().Value属性获取单元格数据。输出单元格数据或用于其他操作。释放资源。
代码示例
from spire.xls import Workbook, Stream# 创建一个字节对象或使用现有的字节对象
with open(output/CreateExcelByStream.xlsx, rb) as file:bytes_data file.read()# 创建一个工作簿实例
workbook Workbook()# 从字节流加载Excel文件
workbook.LoadFromStream(Stream(bytes_data))# 获取第一个工作表
sheet workbook.Worksheets.get_Item(0)# 从工作表读取数据
# 创建一个列表来存储数据
data []
for i in range(sheet.AllocatedRange.Rows.Count):# 获取一行数据row sheet.AllocatedRange.Rows.get_Item(i)# 创建一个列表来存储该行的数据row_data []for j in range(row.Cells.Count):# 获取单元格的值cellValue sheet.AllocatedRange.get_Item(i 1, j 1).Valuerow_data.append(cellValue)data.append(row_data)# 打印数据或按需使用
for row in data:print(row)# 释放资源
workbook.Dispose()运行结果
Python编辑字节流中的Excel文件
同样我们也可以使用Workbook.LoadFromStream(Stream(bytes))方法直接从bytes或bytearray中加载PDF文档并对其进行修改编辑然后使用Workbook.SaveToStream()方法将其保存回字节流中从而实现编辑字节流中的Excel文件。以下是操作步骤示例
导入所需模块。创建Workbook对象。使用字节流创建Stream对象。使用Workbook.LoadFromStream()方法从Stream对象加载Excel文件。使用Workbook.Worksheets.get_Item()方法获取指定工作表。根据需要修改格式。使用Workbook.SaveToStream()方法将Excel工作簿保存回Stream对象。将Stream对象转换为bytes或bytearray。将字节流写入文件或用于其他用途。释放资源。
代码示例
from spire.xls import Workbook, Stream, HorizontalAlignType, Color, FileFormat# 创建一个字节对象或使用现有的字节对象
with open(output/CreateExcelByStream.xlsx, rb) as file:bytes_data file.read()# 创建一个工作簿实例
workbook Workbook()# 从字节流加载Excel文件
stream Stream(bytes_data)
workbook.LoadFromStream(stream)
stream.Close()# 删除多余的工作表
#for i in range(1, workbook.Worksheets.Count):
# workbook.Worksheets.Remove(workbook.Worksheets.get_Item(i))# 获取第一个工作表
sheet workbook.Worksheets.get_Item(0)# 修改标题行的样式
headerRow sheet.AllocatedRange.Rows.get_Item(0)
headerRow.Style.Font.Bold False
headerRow.Style.Font.FontName Calibri
headerRow.Style.Font.Size 12
headerRow.Style.HorizontalAlignment HorizontalAlignType.Left
headerRow.Style.Color Color.FromRgb(92, 64, 131)# 修改数据行的样式
for i in range(1, sheet.AllocatedRange.Rows.Count):row sheet.AllocatedRange.Rows.get_Item(i)row.Style.Font.FontName Calibrirow.Style.Font.Size 11row.Style.Color Color.FromRgb(255, 237, 206)if i % 2 0:row.Style.Color Color.FromRgb(255, 228, 181)# 自动调整列宽
for i in range(sheet.AllocatedRange.Columns.Count):sheet.AutoFitColumn(i 1)# 保存修改后的Excel文件
streamTemp Stream()
workbook.SaveToStream(streamTemp, FileFormat.Version2016)# 将流转换回字节
bytes_data streamTemp.ToArray()# 将字节写入文件或按需使用
with open(output/ModifiedExcel.xlsx, wb) as file:file.write(bytes_data)运行结果
本文演示了如何用Python创建Excel工作簿保存到字节流以及读取和修改字节流中的Excel工作簿。
申请免费License