以编程方式生成带有枢轴和图表的Excel工作簿

时间:2009-11-10 06:03:58

标签: c# excel vsto

我需要创建一个工作簿,其中包含工作表上的原始数据和另一个工作表上的数据透视表。枢轴是从原始数据创建的。然后我需要在相同或新的工作表上创建一个带有此轴的图表。

如何在C#中执行此操作 - 这是否可以使用VSTO?

3 个答案:

答案 0 :(得分:4)

最简单的方法吗?
使用Open XML SDK 2.0

  1. 使用已创建的原始数据,pivottable和pivotchart构建预生成的工作簿版本。
  2. 安装OpenXML SDK 2.0安装程序包
  3. 使用此安装中的OpenXML SDK 2.0生产力工具打开工作簿
  4. 在左侧窗格中选择根元素,然后右键单击并选择“反映代码”
  5. 完成 - 在左侧窗格中是一个完整的C#类,其中包含生成文件所需的代码。
  6. 还没有完成,因为您仍然需要重构代码以考虑动态添加所需的数据内容,但如果您已经很好地了解C#,这将获得97%的支持。

答案 1 :(得分:2)

之前我做过类似的事情,但我没有用C#做过。我使用VBA,因为语言已内置于Excel中。

我的方法是:

  • 创建一个名为“RAW DATA”的工作表。此工作表中有一个QueryTable对象,可以通过VBA中的代码进行更新。
  • 我根据RAW DATA工作表中的QueryTable手动创建了一个数据透视表。
  • 然后我在VBA中添加了代码,以便在更新RAW DATA后,使用新数据刷新数据透视表。

如果原始数据和数据透视表的布局保持不变,则此方法非常有效。我有一个我为cowork制作的工作簿,它根据一组数据用数据透视表更新多个工作表。她非常喜欢它,因为只需点击一个按钮,她就可以清楚地看到她的所有数据。

如果这种方法适合您,并且您想了解如何实施其中一些方法的详细信息,请告诉我您的具体情况,我可以尝试帮助您。

答案 2 :(得分:1)

一种选择是从Excel连接到数据库并通过VBA或defining an SQL query in Pivot data source刷新“原始数据”表。这不是很好,因为打开文件的用户必须能够连接到数据库。

另一种选择是通过C#以编程方式填充“原始数据”表。有numerous libraries可以帮助您,甚至一些free ones,但您也可以使用Excel XML格式(SpreadsheetML)自己完成。您可以使用Excel 2003 XML格式或新的Open XML Excel format。后者要复杂得多,但有了它,您还可以利用OpenXML SDKExcel Package API