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

我需要创build一个工作簿,在工作表上有一个原始数据,在另一个工作表上有一个数据透视表。 数据透视是从原始数据创build的。 然后我需要在同一个或新的工作表上创build一个图表。

我怎样才能在C#中做到这一点,这可能使用VSTO?

一种select是从Excel连接到数据库,并通过VBA或在Pivot数据源中定义SQL查询刷新“原始数据”表。 这并不是打开文件的用户必须能够连接到数据库。

另一个选项是通过C#编程式填充“原始数据”表格。 有许多库可以帮助你,甚至是一些免费的库 ,但你也可以使用Excel XML格式(SpreadsheetML)自己做。 您可以使用Excel 2003 XML格式或新的Open XML Excel格式 。 后者要复杂得多,但利用OpenXML SDK和Excel Package API也可以 。

最简单的方法来做到这一点?
使用Open XML SDK 2.0

  1. 使用已经创build的原始数据,透视表和数据透视图来构build工作簿的预生成版本。
  2. 安装OpenXML SDK 2.0安装程序包
  3. 使用此安装中的OpenXML SDK 2.0生产力工具打开工作簿
  4. select左侧窗格中的根元素,然后右键单击并selectreflection代码
  5. 完成 – 在左侧窗格中是一个完整的C#类,其中包含生成该文件所需的代码。
  6. 还没有完成,因为您仍然需要重构代码以考虑dynamic添加所需的数据内容,但是如果您已经很熟悉C#,那么这将使您获得97%的成绩。

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

我的做法是这样的:

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

如果原始数据和数据透视表的布局保持不变,这种方法非常有效。 我有一个工作簿,我为一个基于一组数据更新多张数据透视表的工作簿。 她非常喜欢它,因为只需点击一个button,她就可以更新所有数据。

如果这种方法适用于您,您希望获得更多关于如何实施这些方法的详细信息,请让我了解您的情况的更多细节,我可以尝试帮助您。