如何以编程方式填充和获取Excel电子表格的PDF输出?

时间:2018-08-23 13:57:07

标签: .net excel excel-vba automation ole

我有一本Excel工作簿,它允许我输入某些字段的值,单击一个按钮,然后根据我的输入生成PDF报告。然后,我必须选择保存此PDF文件的目录。

我必须创建一个类似REST的API,该API将接收带有Excel工作表输入参数的有效负载,并返回生成的PDF文件。

我不可能访问工作簿中的宏,数据和逻辑,因此我不能只直接在我的API中实现相同的逻辑。该工作簿还将定期更改(公式,宏等),唯一剩下的就是输入字段和PDF输出。

在对this library进行了一些测试之后,我不确定它是否允许我调用按钮(生成PDF)并指定输出目录。我主要使用C#和.NET,如何实现呢?

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用Excel Interop库?您可以通过安装Microsoft.Office.Interop.Excel软件包来通过Nuget获得它。

这将允许您打开工作簿,将一些值写入某些单元格,并运行由按钮调用的宏。

// Start a new instance of Excel
var app = new Interop.Application();

// Open the workbook 
var workbook = app.Workbooks.Open(path);

// Set some values
workbook.Worksheets["Sheet1"].Range["A1"].Value2 = 123;

// Run the macro
app.Run("Module1.MyMacro");

但是对此有一些限制。由于Interop库实际上是在打开Excel,因此在其上运行此计算机的计算机必须已安装Excel。同样,在宏实际完成运行之前,Application.Run方法将立即返回。您可以通过不断检查是否出现PDF输出文件来解决此问题:

while (!File.Exists(path))
{
    Thread.Sleep(5000); // wait for 5 seconds
}