我有在Windows XP / 7上运行的进程。他们生成每周.csv数据文件。我有一堆excel公式,它们分别为每周生成的每个.csv文件编号,然后将每周数据添加到包含所有数据的一个大电子表格中。
行数每周和每个流程都有所不同。所以我不能在我的几十个公式中对这个数字进行硬编码。所以现在我经历了这个愚蠢的过程,每周手动输入公式到.csv文件。
必须有一种自动化的方法。刚才我很快就通过C#或VB代码来做这件事。有人可以推荐最好的方法来做到这一点。 C#或VB是正确的方法吗?如果是这样,任何有关如何将它们放在一起的提示 - 使用的模型是什么?例如,它看起来像这样:
这是怎么接近它的?对于那些对C#或VB知之甚少的人,有没有更好的方法?我知道Java和C ++。
任何建议都将受到高度赞赏。
由于
答案 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函数指定使用单元格的范围 用辅助数据。
我认为这可行。