我需要创建一个Excel 2007模板工作簿,并设计以编程方式使用数据集填充它的方法。模板工作簿应包括将出现在最终结果中的所有格式和样板内容,但不会包含任何数据行。
数据注入过程必须能够动态地将数据插入到工作簿中,希望在不知道模板中存在的样式,条件列,计算,图表等的情况下。
我一直在尝试使用新的OpenXml Document Formats SDK 2.0(使用C#),并发现它在阅读和操作Excel工作簿方面提供了很大的灵活性。然而,我越深入研究它,我就越发现它需要熟悉Excel的内部工作原理。例如,表,工作表和计算链都在包内单独维护的事实正在测试我理解的限度。我担心我的“解决方案”可能会在不同的数据场景中出现意外行为。
所以,我想知道是否有更强大的方法......
鉴于Excel能够绑定到外部数据源(包括Xml数据),我的数据集是否可以保存为Xml文件并注入工作簿包文件?换句话说,“外部”数据源是否可以在工作簿包中?如果是这样,我将如何在模板中定义占位符表,以便在打开工作簿时自动绑定到注入的数据?
非常感谢您的建议。
答案 0 :(得分:1)
这涉及一些不同的方法,但我发现Apache POI(http://poi.apache.org/)非常适合生成Excel工作簿。我还没有找到我想要的不支持的Excel功能。它也不需要非常深入的Excel知识,并附带一个很好的示例库。
我也必须将基于XML的数据转换为Excel。我编写了在Scala中使用POI的代码,以利用其出色的XML处理库。
答案 1 :(得分:0)
您是否尝试过使用内置于Excel中的“获取外部数据”?功能区的数据选项卡然后在From Other Sources下拉列表中,您可以从您的xml文件中检索Excel信息。为了降低格式,可能需要进行一些实验。
答案 2 :(得分:0)
你可以尝试创建一个自定义按钮(在功能区栏上?)来读取xml,然后为你填充表格。
VSTO是你的朋友。 :)