XLSX到XML与架构映射

时间:2014-09-17 14:25:06

标签: python xml excel xlsx openpyxl

我已经在XLSX工作簿之上使用XML工具构建了几个基本工作流,这些工具被映射到XML模式。您可以将数据输入电子表格,导出XML,然后我有一些脚本可以处理数据。

现在我正试图消除这一步,构建一个更加集成和可移植的工具,其他人可以通过从XSLT / XQuery迁移到Python轻松使用。我仍然希望使用Excel进行数据输入,但让Python脚本直接读取XLSX文件。

我发现一堆易于使用的库可以从Excel中读取,但是他们需要明确说明数据所在的单元格,例如range('A1:C2')等。使用XML映射的有用之处在于用户可以调整大小甚至移动表以适应不同的行并重命名工作表。他们的库是否可以让我选择表作为单位?

我尝试的另一种方法是解压缩XLSX并直接解析XML。问题在于我们的数据非常复杂(最多需要30-50页)并且在未压缩的XLSX结构中解析它确实令人生畏。我确实在未压缩的XLSX中找到了我的XML模式,那么有没有办法将数据重新格式化为Excel之外的这个模式? (基本上当我将工作簿保存为.xml文件时Excel会执行的操作)

1 个答案:

答案 0 :(得分:0)

Excel格式非常复杂,组件之间存在依赖关系 - 例如,您无法确定文件夹工作表中工作表的顺序与Excel中文件的外观有关。

我并不确切地理解您正在尝试做什么,但现有的库提供了隐藏XML层的客户端代码的接口。如果你不想要,那么你必须找到有用的部分。在openpyxl中,您希望openpyxl/reader专门查看worksheet.py中的内容。

但是,使用lxml可能会更好,因为这样(在后台使用libxml2)将允许您将单个XML加载到Python中并使用.objectify()方法直接操作它。我们不会在openpyxl中执行此操作,因为XML树会消耗大量内存(并且许多人都有非常大的工作表)但是使用Powerpoint的库显示了它的容易程度。