将 Excel zip 文件内容转换为实际的 Excel 文件?
Convert Excel zip file content to actual Excel file?
我正在使用 python 中可用的 cmis
包从 FileNet 存储库下载文档。我正在使用包中提供的 getcontentstream 方法。但是它 returns 内容文件以 'Pk' 结尾并以 'PK' 结尾。当我用谷歌搜索时,我才知道这是 excel 压缩包内容。有没有办法将内容保存到 excel 文件中。我应该可以打开下载的excel。我正在使用下面的代码。但是需要获取类似字节的对象而不是 str。我注意到结果类型是 string.io
。
# expport the result
result = testDoc.getContentStream()
outfile = open(sample.xlsx, 'wb')
outfile.write(result.read())
result.close()
outfile.close()
您好,欢迎来到 Whosebug。关于您的 post.
我注意到了几点
直接回答您收到的错误代码。您将输出文件 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
包含 sheet 的数量和 sheet 个名称
docProps/core.xml
样板用户信息和创建日期
xl/workbook.xml
包含 sheet 将 rdId 命名为工作簿 link
xl/worksheets/sheet1.xml
(以及此文件夹中的更多 sheet)包含每个 sheet 的单元格数据
xl/_rels/workbook.xml.rels
在 zipfile 中包含 sheet 个文件位置
xl/sharedStrings.xml
如果您只有字符串单元格值
[Content_Types].xml
将架构应用于文件类型
我最近从头开始拼凑了一个 excel 文件,如果您想查看代码,请查看 https://github.com/PydPiper/pylightxl
我正在使用 python 中可用的 cmis
包从 FileNet 存储库下载文档。我正在使用包中提供的 getcontentstream 方法。但是它 returns 内容文件以 'Pk' 结尾并以 'PK' 结尾。当我用谷歌搜索时,我才知道这是 excel 压缩包内容。有没有办法将内容保存到 excel 文件中。我应该可以打开下载的excel。我正在使用下面的代码。但是需要获取类似字节的对象而不是 str。我注意到结果类型是 string.io
。
# expport the result
result = testDoc.getContentStream()
outfile = open(sample.xlsx, 'wb')
outfile.write(result.read())
result.close()
outfile.close()
您好,欢迎来到 Whosebug。关于您的 post.
我注意到了几点直接回答您收到的错误代码。您将输出文件 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
包含 sheet 的数量和 sheet 个名称docProps/core.xml
样板用户信息和创建日期xl/workbook.xml
包含 sheet 将 rdId 命名为工作簿 linkxl/worksheets/sheet1.xml
(以及此文件夹中的更多 sheet)包含每个 sheet 的单元格数据
xl/_rels/workbook.xml.rels
在 zipfile 中包含 sheet 个文件位置
xl/sharedStrings.xml
如果您只有字符串单元格值[Content_Types].xml
将架构应用于文件类型
我最近从头开始拼凑了一个 excel 文件,如果您想查看代码,请查看 https://github.com/PydPiper/pylightxl