2012-12-13 42 views
0

我有1个例程的结构是这样的:架构从Excel中创建PDF文件报告

  1. C#控制台C打开xl工作簿中
  2. C,那么上运行的宏观中号节省了目标工作表作为PDF使用VBA
  3. C然后使用PDFsharp加密PDF文件。
  4. C然后通过电子邮件发送此文件。

目前这个程序是为一个报告,所以没有问题,如果架构不是教科书。

我想在未来,许多不同的工作簿中可能会有许多目标工作表,这些工作表都会有很多不同的收件人。如果是这种情况,那么第2步将需要去,因为我不想将这个VBA代码复制到每个目标工作簿!我能想象我的经验是有限的,唯一的选择是:

  1. 就拿目前VBA代码导出Excel和使用参考其移动到C至Excel.Interops

假设目标工作表是完成的文章,即去PDF之前不需要进一步的操作是上述正确的方法将此步骤移出VBA并进入控制台,或者我应该使用不同的库创建PDF?

回答

0

通过删除所有表单/数据,然后使用“另存为”将工作簿转换为加载项,然后您可以使用最省力选项将代码从工作表移动到VBA加载项中加载到excel中并且一直可用。取决于你如何写它可能需要一些改变,但它们不会像c#的端口一样大。

也就是说,将代码全部放在一个地方将会使整个过程更容易在将来得到照顾。另外,你已经有C#代码自动执行excel来启动VBA,所以如果你有时间的话,现在做它可能会更好。

+0

...使用'Interops'是我唯一的选择?我无法使用其他方法在C#中保存Excel工作表?我可以使用更通用的东西来保存为PDF,然后将该代码指向Excel工作表?假设我希望把一些更通用的东西放在适当的位置,所以如果将来有人说 - “你能发出PDF格式的Word文档吗?”那么我可以指出我的代码呢? – whytheq

+0

我正在使用'interop',所以我会使用它的时间;假设它是有意义的 - 如果从xl制作pdf,然后使用xl interop'_ – whytheq

+0

就我之前创建它们的Excle插件而言,但由于控制台已经控制了很多流程,所以我已经很想迁移尽可能多的功能 – whytheq