python 使用openpyxl读写大文件的坑

本文介绍了解决使用openpyxl处理大型xlsx文件时遇到的问题,通过手动释放内存和安装lxml依赖实现了文件的成功读写。

由于需要处理xlsx类型的文件,我使用了openpyxl来处理,然而文件比较大,大约有60多MB。读文件的时候虽然慢了一点,但还是能够读出来,但是当我想写入时却报错了。

内存不足
显示设备没有多余的空间,百度了一下,发现有不少关于openpyxl读写大文件的问题。总结来看,解决方案主要有以下两种,当然,我两种都用上了。

手动释放内存

del wb, ws
gc.collect()

这一招还算有用,在读完文件后可以看到内存占用明显下降了一点。

安装lxml
使用命令·pip install lxml安装依赖
这个依赖并非必须安装的依赖,但是可以使openpyxl流式处理数据。

总之使用了以上两种方案后,终于可以成功处理数据了。

### 使用Pythonopenpyxl库进行Excel文件的读写 #### 导入库 为了使用`openpyxl`库的功能,程序一开始需要导入必要的模块。这通常包括`Workbook`类以及`load_workbook`函数,它们分别用于创建新的工作簿和加载现有的Excel文件。 ```python from openpyxl import Workbook, load_workbook ``` #### 创建一个新的Excel文件并保存数据 当希望新建一个Excel文件并向其中写入数据时,可以通过实例化`Workbook()`来创建一个新的工作簿对象[^3]。 ```python wb = Workbook() # 创建一个新的工作簿 ws = wb.active # 获取默认的工作表 ws.title = "Sheet1" # 设置工作表名称 # 向指定单元格写入内容 ws['A1'] = 'Hello' ws['B1'] = 'World' # 另一种方式是通过行列索引赋值 ws.cell(row=2, column=1, value='Row') ws.cell(row=2, column=2, value='Column') # 将更改保存到新文件中 wb.save('example.xlsx') # 文件将以xlsx格式保存 ``` #### 加载现有Excel文件并读取数据 如果要处理已有的Excel文件,则应调用`load_workbook`方法,并传递目标文件路径作为参数。此过程允许访问文件内的各个表格及其内部的数据项[^4]。 ```python loaded_wb = load_workbook(filename="existing_file.xlsx") # 载入已有文件 active_ws = loaded_wb.active # 访问活动工作表 for row in active_ws.iter_rows(min_row=1, max_col=2, max_row=2): # 遍历前两行中的两个列 for cell in row: print(cell.value) # 输出每个单元格的内容 ```
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值