将Excel数据转换为XML

与您可能想到的相反,并不是每个文档最初都是用XML编写的。 实际上,大多数文档是使用其他工具准备的,后来又转换为XML。 许多文档源自关系数据库(例如DB2)或Microsoft Office应用程序(例如Word或Excel)。

我发现许多企业都使用Excel来编辑和准备数据。 它使用简单,使用广泛,其表格格式非常适合各种信息,例如产品列表,名称列表,财务数据或统计数据。 Excel电子表格通常通过电子邮件发送给要求填写空白的用户。

检索数据

在专有应用程序中收集和准备数据时出现的问题之一是恢复数据。 幸运的是,这不是Excel的问题。 尽管没有公开提供Excel文件格式的规范,但是有许多选项可以从电子表格中提取XML信息。 本技巧介绍了您的选择,并重点介绍了每个解决方案的优缺点。

XML的

最新版本的Excel(Excel 2002和Excel XP)可以将电子表格导出为XML。 尽管您对标签的选择没有任何发言权,但是您确实获得了可以用任何XML工具(包括XSLT样式表)进行后处理的有效XML文档。 该格式称为XMLSS

如果满足以下条件,这是最简单的解决方案:

  1. 您的用户拥有最新版本的Excel,并且
  2. 您正在工作站上处理XML数据。

第一个条件很明显,第二个条件可能需要更多解释。

假设您设置了一个服务器来收集和处理统计数据。 您的用户使用Excel准备数据,然后将其电子表格上传到服务器以进行进一步处理。 第一步是将电子表格转换为XML。 一种解决方案是在Excel中打开电子表格,然后将其导出为XMLSS格式。 我已经看到公司实施了这样的解决方案,尽管它可以运行,但是请务必记住Excel是为工作站而不是服务器设计的。

尽管可以使用,但此解决方案可能不会像您希望的那样稳定。 除其他问题外,电子表格转换可能会成为瓶颈,因为可能难以对转换进行多线程处理。 在最坏的情况下,每个请求都会排队到单个Excel副本中。 它还限制了您的托管选项:Excel仅在Windows和MacOS上可用。

CSV文件

第一种选择是不使用实际的电子表格文件,而是使用逗号分隔值(CSV)文件。 CSV是一种用于交换电子表格的流行文件格式。 任何有价值的电子表格都可以导出和导入CSV文件。

此外,许多可与电子表格一起使用的第三方产品也支持CSV。 例如,大多数记帐软件包都可以使用CSV文件。 尽管CSV文件不是XML,但使用诸如XI之类的工具将它们转换为XML文件很简单(请参阅参考资料 )。 TopXML站点还包括用于纯XSLT解决方案的算法。

使用CSV文件对服务器更具吸引力。 一方面,您不再局限于某些平台。 相反,您正在为用户扩展选项(他们现在可以使用Lotus 1-2-3和其他电子表格以及许多也可以识别CSV格式的第三方工具)。

此解决方案唯一的缺点是您的用户必须采取额外的步骤将数据保存为CSV。 实际上,我发现这很少有问题,但是您的里程可能会有所不同。

普通转换

最后但并非最不重要的一点是,您可以使用特殊的库来读取Excel文档。 Excel文件格式尚未正式记录,但第三方对其进行反向工程已有一段时间了。 他们还提供了用于解码Excel文件的库(请参阅参考资料 )。 以下是一些可用API的列表:

  • Java Excel API是我最喜欢的解决方案之一,因为它具有可移植性,可以很好地读取XML文档,并且可以转换为XML。
  • XML :: Excel是Perl API,用于将Excel文档转换为XML。
  • OpenOffice包含用于读取Excel文档的C ++库。 您可以将这些库用作从Excel转换为XML的基础。
  • Apache POI支持使用Java代码读取Excel文件。 同样,您可以将其用作Excel到XML转换器的基础。

此列表仅是代表性示例。 其他工具可用于不同的平台。

转换Excel文件具有三个好处:

  • 这些文件可以在任何平台上运行。
  • 这些库很容易与服务器集成。
  • 用户无需记住要导出数据。

该解决方案的主要危险在于,没有一个库比真实的库好,并且您会发现某些电子表格的转换效果不佳。 您将需要测试适合您项目的最佳库。

走吧

Excel是一种流行的工具,用于准备您可能需要用XML处理的各种数据。 幸运的是,如本技巧文章所示,您有很多选择来获取XML数据。 最佳选择将取决于项目的具体情况。

无论您如何转换电子表格,都将发现生成的XML文档永远都不是您期望的。 也许它包含不需要的单元格,或者XML词汇表与您期望的不完全一样。 不用担心-在大多数情况下,准备XSLT样式表以过滤掉不需要的数据或重命名标签很简单。


翻译自: https://www.ibm.com/developerworks/xml/library/x-tipexc/index.html

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值