我正在使用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