我正在使用python中提供的cmis
包从FileNet存储库下载文档。我正在使用包中可用的getcontentstream方法。但是,它将返回以“ Pk”存在并以“ PK”结尾的内容文件。当我用谷歌搜索时,我才知道它是excel压缩包的内容。有没有一种方法可以将内容保存到excel文件中。我应该能够打开下载的Excel。我正在使用下面的代码。但是获取字节状对象不是必需的。我注意到结果的类型是string.io
。
# expport the result
result = testDoc.getContentStream()
outfile = open(sample.xlsx, 'wb')
outfile.write(result.read())
result.close()
outfile.close()
您好,欢迎来到stackoverflow。我注意到了您的帖子。
要回答错误代码,您将直接获得。您将输出文件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
包含工作表链接的工作表名称rdIdxl/worksheets/sheet1.xml
(此文件夹中还有更多工作表)包含每张工作表的单元格数据xl/_rels/workbook.xml.rels
包含zipfile中的工作表文件位置xl/sharedStrings.xml
,如果您只有字符串单元格值[Content_Types].xml
将架构应用于文件类型我最近从头开始将Excel文件拼凑在一起,如果您想查看代码签出https://github.com/PydPiper/pylightxl