将 Excel zip 文件内容转换为实际的 Excel 文件?



我正在使用python中可用的cmis包从FileNet存储库下载文档。我正在使用软件包中可用的获取内容流方法。但是,它返回以"Pk"存在并以"PK"结尾的内容文件。当我用谷歌搜索时,我开始知道它是 excel zip 包内容。有没有办法将内容保存到Excel文件中。我应该能够打开下载的 excel。我正在使用下面的代码。但是获取类似字节的对象是必需的,而不是 str。我注意到结果类型是string.io.

# expport the result
result = testDoc.getContentStream()
outfile = open(sample.xlsx, 'wb')
outfile.write(result.read())
result.close()
outfile.close()

你好,欢迎来到堆栈溢出。关于你的帖子,我注意到了一些地方。

要回答您直接收到的错误代码。你调用outfile FileStream是二进制的,但是result.read((必须是Unicode字符串格式,这就是你收到此错误的原因。在将它传递给outfile.write((函数之前,您可以尝试对其进行编码(例如:outfile.write(result.read().encode())(。

您也可以直接通过以下方式简单地编写 Unicode:

result = testDoc.getContentStream()
result_text = result.read()
from zipfile import ZipFile
with ZipFile(filepath, 'w') as zf:
zf.writestr('filename_that_is_zipped', result_text)

不是我不确定您的 ContentStream 中有什么,但请注意,excel 文件由压缩的 xml 文件组成。Excel 文件所需的最小文件结构如下:

  • _rels/.rels包含 Excel 架构
  • docProps/app.xml包含图纸数和图纸名称
  • docProps/core.xml样板用户信息和创建日期
  • xl/workbook.xml包含工作表名称rdId到工作簿链接
  • xl/worksheets/sheet1.xml(以及此文件夹中的更多工作表(包含每个工作表的单元格数据
  • xl/_rels/workbook.xml.rels包含zip文件中的工作表文件位置
  • xl/sharedStrings.xml是否只有字符串单元格值
  • [Content_Types].xml将架构应用于文件类型

我最近从头开始拼凑了一个 excel 文件,如果您想查看代码,请查看 https://github.com/PydPiper/pylightxl

相关内容

  • 没有找到相关文章

最新更新