【问题标题】:Write Excel 2003 XML from Python从 Python 编写 Excel 2003 XML
【发布时间】:2019-05-06 16:13:33
【问题描述】:

从 Python 处理 Excel 文件有很多很棒的东西,我想我只是陷入了一个有趣的小裂缝:我需要使用纯 Python(不是win32com 或 VBA 什么的)。就像海报here 一样,我正在获取讨厌的专有文件,并且不得不以完全相同的讨厌的专有方式将它们吐出,否则讨厌的专有软件不会收回它们。我一直在处理数据,所以这不仅仅是格式转换;我需要在 Python 中对文件进行实际处理,然后以它们传入的相同格式将它们写回。here 提出了一个更简单的问题版本,但没有直接回答。

xlsxwriter 文档有一个很好的summary of the current state of the art,这与我自己的谷歌搜索一致:xlwt 将处理旧的非 XML 格式,openpyxl 专门处理 Excel 2010 格式,xlsxwriter 本身适用于 2007+,pythonOffice 没有被触及自 2012 年以来。

请告诉我,我不必使用 BeautifulSoup 或其他工具手动解析所有内容即可返回 Excel 2003!如果需要,我可以使用 Python 2 或 3,或两者兼而有之。谢谢。这些是命名空间的相关位:

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
 ...
</DocumentProperties>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">

【问题讨论】:

  • 也很好奇为什么有人投票关闭作为离题。当然似乎属于“......程序员常用的软件工具;并且是软件开发独有的实用、可回答的问题”。如果它应该在不同的 SE 站点上,请赐教。

标签: python excel xml


【解决方案1】:

我也一直在处理类似烦人的专有文件。在对所有相同的 python excel 扩展进行了大量挖掘之后,我也得出结论,是的,您必须手动解析 xml 文件。

【讨论】:

  • 多么令人沮丧……尽管我很欣赏这些信息。阴性结果仍然是结果,我知道我没有错过一些非常明显的事情!
【解决方案2】:

我遇到了同样的问题,但找到了一个我认为两者都有的答案:

  • 实施速度更快
  • 更容易修改,并且随着时间的推移不断发展(特别是如果您的 CSV 发生变化,例如添加了新列)

我必须将规则 CSV 转换为 SpreadsheetML 格式的 .xml(XML 电子表格 2003),我找到了一个很好的教程,介绍了如何使用多种方式进行操作。对于 Python 3,我选择了 ffe (Flat File Extractor)

基本:

  1. 要使用 ffe,您必须在 linux 环境中运行并使用 $sudo apt-get install ffe 安装它。 (仅供参考:Windows 也有二进制文件)
  2. 您需要创建一个类似于 XML 模板的特定格式的 .fferc 配置文件(请参阅提供的文章或文档链接)
  3. 然后您可以使用 bash/shell 命令行将您的 输入 csv 文件 转换为 输出 xml 文件$ffe -o output.xml -c csv2xml.fferc input.csv

如果您想快速制作原型,我成功提交了Google Colab Notebook。您可以使用我上面提供的 sudo 命令安装它。

编码愉快!

全文链接:Converting CSV to XML on Ubuntu Communiti Wiki

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多