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

时间:2009-06-30 20:12:54

标签: c# excel

我需要生成一个有点复杂的excel工作簿,其中包含30多个工作表,每个工作表使用来自多个数据库表的信息来动态绘制每张表的几个表格,并进行格式化。我过去使用过c#虽然我对它在Excel中的使用不太感兴趣。有关如何从数据库动态格式化和定位单元格的任何建议都将是一个很大的帮助。

提前致谢。

3 个答案:

答案 0 :(得分:2)

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

以下是一些链接

虽然有一些奇怪之处,但这很容易做到。我发现使用Excell MACRO记录器记录动作非常有效,然后查看C#中的来源和重新记录。 VB和C#之间的对象模型完全相同。

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

答案 1 :(得分:0)

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

10年前,我做了类似的事情。已经有一段时间了,但这就是我想出来的。

  1. 把所有计算出来的&摘要信息在上面。 (包括'底线'总计)
  2. 工作表顶部总计单元格的基础图表​​,因为它们不会移动。
  3. 将所有图表,摘要等放在他们自己的工作表上。
  4. 如果涉及计算,请使流程的每个步骤都可用,以便用户可以单步执行。这将阻止您花费无数个小时来证明您的代码根据规范进行计算,如果您不这样做,您的“黑匣子”计算将不断受到质疑。
  5. 如果他们不想查看原始数据,只想查看计算,那么请考虑将其推送到隐藏的工作表。
  6. 使用您的应用程序存储模板工作簿,然后只需复制它即可在XL中进行所有格式化,而非代码。
  7. 您真正想要避免的一件事是跟踪不同的单元格位置。您希望将值推送到始终位于相同位置的单元格中。

答案 2 :(得分:0)

我发现Excel中一个非常有效且经常被充分利用的功能是Web查询。

如果您可以在网站上显示数据,则可以预先构建Excel工作簿,并设置Web查询以按需从网站收集数据,该数据以适当网页中的表格形式显示。 / p>

您可以添加查询字符串参数以将参数传递到网页,并且您可以设置自动刷新,格式化保存等。数据透视表/图表可以引用数据,并且可以通过几行更新数据例如,VBA。

如果能够满足要求,这通常比VSTO简单得多。

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