技巧: 将 Excel 数据转换成 XML
2008-05-23 09:44
633 查看
从最流行的电子表格程序中提取数据 |
Benoit Marchal (bmarchal@pineapplesoft.com), 顾问, Pineapplesoft 2003 年 12 月 01 日 不管您是否相信,并不是每份文档一开始就是用 XML 写的。在这篇技巧文章中,Benoit Marchal 向我们解释了如何将数据从 Excel 文件中解放出来,并用 XML 来处理它们。然后比较了各种不同解决方案的优缺点。 并不是每一份文档最初都是用 XML 写的,这可能与您想像的正好相反。事实上,大多数文档都是用其他一些工具准备出来,然后再转换成 XML 的。许多文档来源于 DB2 这样的关系数据库,或者来源于 Microsoft Office 应用程序,比如 Word,或是 Excel。 我发现很多业务中都用 Excel 编辑和准备数据。这个工具简单易用,得到了广泛采用,其表格格式对各种信息都十分适合,比如产品清单、姓名清单、金融数据、统计数据等等。人们通常会把 Excel 电子表格用电子邮件发给用户,让用户填写其中的空白。 获取数据 当人们从某个私有应用程序中收集和准备数据的时候,通常会遇到如何恢复数据的问题。幸好在 Excel 中不存在这样的问题。尽管对 Excel 文件格式的定义并没有公开,我们还是可以用一些方法从电子表格中提取出 XML 信息。本篇技巧文章将回顾一下可用的方法,并着重指出每一种解决方案的优缺点。 XMLSS 最新版本的 Excel(包括 Excel 2002 和 Excel XP)可以将电子表格导出为 XML。虽然您无法选择其中使用哪些标签,但是的确可以得到一个有效的 XML 文档。您可以用包括 XSLT 样式表在内的任意一种 XML 工具来处理它。这种格式称为 XMLSS。 如果符合下列条件,这就是最简单的方法: 您的用户具有最新版本的 Excel,并且 您在工作站上处理 XML 数据。 第一种条件是显而易见的,第二个则需要多解释一下。 假设您设置好一台服务器,用来收集和处理统计数据。您的用户用 Excel 准备好数据,然后将这些电子表格上传到服务器上,以供后续处理。第一步是将电子表格转换成 XML。一种解决方法是在 Excel 中打开电子表格,然后将其导出为 XMLSS 格式。我曾经见过一些公司用这种办法处理文档,虽然是可行的,但是有一点必须牢记:Excel 的设计工作环境是工作站,而不是服务器。 这样的解决方案尽管能够实现功能,但是却有可能不像您期望的那样稳定。在其他问题当中,电子表格转换本身就可能成为瓶颈,因为转换过程很难实现为多线程。最糟糕的情况是,每一请求都在单个 Excel 副本中排起队来。同时,这种方法也限制了您的主机系统,因为 Excel 仅仅能在 Windows 和 MacOS 中使用。 CSV 文件 第一种替代的方法是,不操作实际的电子表格,而是改为操作 CSV(comma-separated value)文件。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 样式表,就可以过滤掉不需要的数据,或是对一些标签进行重命名。 参考资料 您可以参阅本文在 developerWorks 全球站点上的 英文原文. 参与 Benoit Marchal 的使用 XML 专栏 的 讨论论坛。 Don Day 的“ Hands-on XSL”( developerWorks,2000 年 3 月)是关于 XSLT 的快速培训指南。其中讲到 XSLT 是在格式转换之后对文档进行后期处理的最好工具。 请阅读 Benoit Marchal 的“ Importing text as XML with XI”( developerWorks,2002 年 4 月),介绍了一种将 CSV 文件转换成 XML 的工具。 下载 Java Excel API,这是一个很好的工具,可以将 Excel 文件转换成 XML。 试用 XML::Excel Perl 模块,这是一个简单的工具,可用于 XML 对 Excel 进行处理。 看看 OpenOffice,其中包括了解析 Excel 文件的库。 Apache 的 Jakarta POI是一种处理 Excel 文件的 Java API。它可用作您自己的 Excel-XML 转换器的基础。Cocoon 使用 Jakarta POI 将 XML 转换成 Excel。 可以从 TopXML 的 XSLT Stylesheets页面中找到大量有用的 XSLT 算法,其中也包括处理非 XML 文档的方法。 从 developerWorks的 XML 专区中可以找到更多有关 XML 的资料。要获取 XML 技巧专栏最新的文章列表,请访问 技巧汇总页面。 了解如何才能成为 IBM 认证的 XML 及其相关技术的开发人员。 关于作者
|
相关文章推荐
- Excel数据转换为cvs,json,xml
- sql server与access、excel的数据转换_数据库技巧
- 将excel表格数据转换为xml文本数据
- 使用 Excel 2003 对象模型添加 XML 数据集成 (From MSDN)
- 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
- 解析并打印Excel格式xml文档数据
- Excel -- 数据类型转换
- 用VB将WORD文档(或其他的二进制数据)生成xml文件并互相转换
- Qt技巧:Qt常用数据类型转换
- 转:Excel转换XML工具<一>
- 使用ADO.net转换数据到Excel格式并提供下载
- TestLink1.9.3测试用例:Excel转换XML工具<一>
- SQL SERVER 与ACCESS、EXCEL的数据转换(转)
- SQL SERVER与ACCESS,EXCEL的数据转换
- Python进阶强化训练之csv|json|xml|excel高效解析与构建技巧
- 将各种格式的数据转换成XML
- Java 读取Excel表格数据日期类型转换
- 精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
- 将Excel数据导入到SqlServer及导入时数据类型转换失败解决方案
- excel 常用使用技巧 一(数据有效性、粘贴转置、数据验证、条件格式、打印、分列、数据连接)