需要自动执行excel数据的运算吗?

时间:2014-03-10 01:41:30

标签: c# excel automation

我有在Windows XP / 7上运行的进程。他们生成每周.csv数据文件。我有一堆excel公式,它们分别为每周生成的每个.csv文件编号,然后将每周数据添加到包含所有数据的一个大电子表格中。

行数每周和每个流程都有所不同。所以我不能在我的几十个公式中对这个数字进行硬编码。所以现在我经历了这个愚蠢的过程,每周手动输入公式到.csv文件。

必须有一种自动化的方法。刚才我很快就通过C#或VB代码来做这件事。有人可以推荐最好的方法来做到这一点。 C#或VB是正确的方法吗?如果是这样,任何有关如何将它们放在一起的提示 - 使用的模型是什么?例如,它看起来像这样:

  • C#模块读入.csv数据文件
  • C#模块创建一个Excel电子表格并使用.csv数据
  • 填充它
  • C#模块在所有行上运行我的公式。

这是怎么接近它的?对于那些对C#或VB知之甚少的人,有没有更好的方法?我知道Java和C ++。

任何建议都将受到高度赞赏。

由于

3 个答案:

答案 0 :(得分:1)

根据您在评论中的解释,似乎拥有一系列模板Excel表将极大地促进了这项任务。

因此,对于生成数据的每个进程,您说公式总是相同的,这意味着列总是相同的(我是对的吗?)。

因此,即使您不知道有多少行数据,您仍然可以创建一个模板,其中只有第一行填充公式,然后您只需反复复制该行,填充它根据需要提供数据,或者,您可以填写一个相对舒适的"具有相同公式的行数,并填写数据。

有很多关于如何与Excel互操作的符号,所以超出我的意图为您提供特定的代码,但这个想法很好。

如果我可以允许自己,我过去曾使用一个非常有趣的工具调用Flexcel Studio for .NET,我发现在基于这些模板生成Excel工作表时,它会有很大的帮助。 / p>

干杯

答案 1 :(得分:1)

正如其他人所建议的,如果可能的话,我建议在excel之外执行计算。有很多统计库可供使用更友好,而不是将数据移动到excel,将公式应用于单元格范围等等。

如果你真的想要使用excel路由,你可以使用开源库,如EPPLUS(.NET)或POI(Java)来工作直接使用.XLSX文件。有些库不支持function evaluation,因此在决定要使用的库时需要考虑这一点。

如果您使用COM interop,则应了解以下内容:Considerations for server-side Automation of Office

对于C#或VB(如果不是带有POI的java),我会选择C#。 C#语法类似于java。

答案 2 :(得分:0)

这个问题可能有一个非常简单的解决方案。

在运行我的进程时或以.csv文件创建.xlsx文件(包含所有公式)时,以编程方式将1个辅助数据添加到.csv文件中。辅助数据是行数,它将位于某个已知位置。

然后修改我的所有公式以使用INDIRECT函数指定使用单元格的范围 用辅助数据。

我认为这可行。