使用c#生成更复杂的Excel工作表

我需要生成一个包含超过30个工作表的复杂的Excel工作簿,每个工作表使用来自多个数据库表的信息来dynamic地绘制每张工作表的几个表格,并进行格式化。 我曾经使用过c#,虽然我在Excel中使用它并不相似。 任何有关如何从数据库中dynamic格式化和定位细胞的build议都是非常有帮助的。

提前致谢。

用于Office(VSTO)的Visual Studio工具是你的朋友:)我一直使用这个来构build复杂的工作表。 这样做比从CSV导入或使用某种古怪的数据库连接更好。

这里有一些链接

  • MSDN
  • 博客
  • 维基百科

这很容易做,虽然有一些古怪的事情。 我发现使用Excell MACROlogging器来logging动作非常有效,然后在C#中查看源代码和重新实现。 VB和C#的对象模型完全一样。

VSTO是Visual Studio 2008的一部分。我查看了产品页面,但是我无法确定它是否带有VS2008 C#Express Edition 。 最简单的做只是下载它,看看:)

你的问题听起来像你已经了解所涉及的技术,所以这个答案限于格式和布局。

10年前我做了一些非常相似的事情。 已经有一段时间了,但是我想到了这一点。

  1. 把所有的计算和汇总信息放在最上面。 (包括“底线”总计)
  2. 由于它们不移动,因此在页面顶部的总计单元格上的基本图表。
  3. 把所有的图表,总结等放在自己的工作表上。
  4. 如果涉及到计算,则可以使每个步骤都可用,以便用户可以逐步完成。 这将防止你花费无数的时间来certificate你的代码按照规范计算,如果你不这样做,你的“黑匣子”的计算将不断受到质疑。
  5. 如果他们不想看到原始数据,只有计算,然后考虑推出一个隐藏的表。
  6. 将模板工作簿与应用程序一起存储,然后将其复制,以便在XL中执行所有格式化,而不是代码。

你真正想避免的一件事是跟踪不同的小区位置。 您想要将值推入始终位于相同位置的单元格中。

我发现Excel中一个非常有效且经常使用不足的function是Web Query。

如果您可以在网站上展示您的数据,则可以预先构buildExcel工作簿,并设置网页查询以根据需要收集网站中的数据,这些数据以表格的forms在相应的网页中呈现。

您可以添加查询stringparameter passing参数到网页,您可以设置自动刷新,格式保存等数据透视表/图表可以参考数据,并可以弥补更新数据刷新几行的VBA,例如。

如果VSTO满足要求,这通常比VSTO更简单。

另一种select是使用第三方Excel文件生成程序集。