当前位置: 首页 > 知识库问答 >
问题:

在内存文件中压缩excel电子表格

傅穆冉
2023-03-14

我正试图压缩由openpyxl创建的excel电子表格以及其他文件,如下面代码所示,但是我收到以下错误,是否需要帮助

错误:

Traceback(最近一次调用最后一次):File"C:\Python27\lib\site-包\cherrypy_cprequest.py",第670行,在响应response.body=self.handler()File"C:\Python27\lib\site-包\cherrypy\lib\encoding.py",第217行,在调用self.body=self.oldhandler(*args,**kwargs)File"C:\Python27\lib\site-包\cherrypy_cpdispatch.py",第60行,在调用返回self.callable(*self.args,**self.kwargs)文件"example.py",第2282行,RPC_submitwb.save(iostream 4)文件"C:\Python27\lib\site-包\openpyxl\workbook\workbook.py",第345行,保存save_workbook(自我,文件名)文件"C:\Python27\lib\site-包\openpyxl\写入器\excel.py",第266行,save_workbookwriter.save(文件名)文件"C:\Python27\lib\site-包\openpyxl\写入器\excel.py",第248行,保存self.write_data()文件"C:\Python27\lib\site-包\openpyxl\作家\excel.py",第81行,write_data。_write_worksheets()文件"C:\Python27\lib\site-包\openpyxl\作家\excel.py",第211行,_write_worksheets。_write_comment(ws)文件"C:\Python27\lib\site-包\openpyxl\作家\excel.py",第181行,_write_commentvml=fromstring(自己. workbook.vba_archive. read(ws.legacy_drawing))属性错误:'NoneType'对象没有属性'read'

代码:

file_name4 = 'SP' + kwargs['sp'] + '-'+ kwargs['WO'] + ' ' + kwargs['site'] + 'TE - ' + 'Asset Distribution' +'.xlsx'
file_path = path + "\\" + file_name4
wb.save(file_path)

iostream4 = StringIO.StringIO()
wb.save(iostream4)

zip_output = StringIO.StringIO()
file = zipfile.ZipFile(zip_output, "w")

file.writestr(file_name0, iostream.getvalue())

file.writestr(file_name4, iostream4.getvalue())

file.close()

cherrypy.response.headers['Content-Type'] = 'application/zip'
cherrypy.response.headers['Content-Disposition'] = (
 'attachment; filename={fname}.zip'.format(
     fname='SP' + kwargs['sp'] + '-'+ kwargs['WO'] + ' ' + kwargs['site'] + ' - ' + 'Request for PC Documentation'  +'.zip'
 )
 )
return zip_output.getvalue()

共有1个答案

施誉
2023-03-14

这里确定的问题与解决方案https://bitbucket.org/openpyxl/openpyxl/issues/766/workbook-cannot-saved-twice

 类似资料:
  • 问题内容: 我想使用urllib下载文件,并在保存之前对文件进行解压缩。 这就是我现在所拥有的: 最终将写入空文件。我该如何实现自己的追求? 更新的答案: 问题答案: 在写完之后,但要传递给之前,您需要寻找到开始的地方。否则它将被模块从头读取,并显示为空文件。见下文:

  • 77.概述 内存压缩(A.K.A Accordion)是 hbase-2.0.0 中的一项新功能。它首先在 Accordion 的 Apache HBase 博客上推出:HBase 通过内存压缩进行呼吸。引用博客: Accordion 将 LSM 主体[ Log-Structured-Merge Tree ,HBase 所基于的设计模式]重新应用于 MemStore,以便在数据仍在 RAM 中时消

  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

  • 问题内容: 我正在下载包含XML的压缩文件,由于延迟要求,我希望避免在操作之前将zip文件写入磁盘。但是,这不足以满足我的需求。没有办法说“这是一个zip文件的字节数组,请使用它”而不将其转换为流,并且它不可靠,因为它会扫描条目标头(请参阅EDIT下面的讨论,以了解为什么它不可靠)。 我尚无法访问要处理的zip文件,因此我不知道我是否能够通过来处理它们,因此我需要找到一种适用于任何有效ZIP文件的

  • 我希望能够从外部文件的值中筛选excel电子表格中的列值。 例如:列A列出了在计算机上运行的一堆程序。我在一个. txt或. csv文件中有一个“认可程序”的白名单。 如果单元格包含与. csv文件中的一个条目匹配的值,我想编写一个脚本,将从“列A”中删除条目。 例如:“A列”包含数百条从“Adobe”到“Xerox”的条目。我有我的“认可软件”清单,其中包括Adobe和Xerox。我希望Exce

  • 问题内容: 任何人都可以向我展示在我一直在搜索的Java中压缩和解压缩tar.gzip文件的正确方法,但是我能找到的最多是zip或gzip(单独)。 问题答案: 我最喜欢的是plexus-archiver-请参阅GitHub上的资源。 另一个选项是Apache commons- compress- (请参阅mvnrepository)。 使用plexus-utils,用于取消存档的代码如下所示: