使用OpenPyxl处理含批注图片的30MB+ XLSM文件的操作咨询
处理带图片批注的大型XLSM文件实践
我最近接手了一个30MB以上的XLSM格式大型Excel文件,体积超标主要是因为里面有大量带图片的单元格批注。下面是我处理这个文件的具体操作流程:
第一步:只读模式打开文件读取指定列名
因为文件体积大,先以只读模式打开可以节省内存、提升加载速度,同时保留原文件的VBA内容:
self.wb = load_workbook(str(self.directory[0]), read_only=True, keep_vba=True, data_only=False) self.ws = self.wb['BAZA_PRACOWNIKOW'] self.sheet = self.wb.active
这里我直接指定了目标工作表BAZA_PRACOWNIKOW,同时获取了活动工作表对象,方便后续定位需要操作的目标单元格。
第二步:定位目标单元格后重新打开文件添加数据
由于只读模式下无法修改文件内容,找到目标单元格后,我重新以可写模式打开文件(代码里的self.directory[...]对应文件路径的正确索引):
self.wb = load_workbook(str(self.directory[...]), read_only=False, keep_vba=True) # 后续执行添加数据的操作代码
实操小提醒
- 只读模式适合纯读取场景,能大幅降低大文件加载时的内存占用,避免程序卡顿
- 保留
keep_vba=True是为了不破坏原文件中的VBA宏逻辑 - 如果需要从根源减小文件体积,可以考虑遍历单元格批注,批量提取或移除批注内的图片后再保存(这一步需要额外处理Excel的Shapes对象)
内容的提问来源于stack exchange,提问作者pk94
相关产品推荐
相关产品推荐

