我正在使用Excel Interop打开xlsx文件并将其另存为pdf文档。在调用“ExportAsFixedFileFormat”方法时,将显示标题为“Publishing”的对话框以指示进度。如何禁止或隐藏此对话框?我在其他论坛上看到了一些没有令人满意的解决方案的类似问题,但希望有人从那时起就解决了这个问题。
码:
Application application = new Application();
application.DisplayAlerts = false; // <- No effect
application.Visible = false; // <- No effect
application.ScreenUpdating = false; // <- No effect
application.UserControl = false; // <- No effect
application.Workbooks.Open(path, Type.Missing, true);
application.DisplayDocumentActionTaskPane = false; // <- No effect
application.Worksheets[1].ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, path);
如何在BackgroundWorker上处理它。这不会抛出COMEXCEPTION
。我在点击按钮时尝试了这个代码,它可以在不显示progress dialog
的情况下工作。
var worker = new BackgroundWorker();
worker.DoWork += (o, args) =>
{
var path = @"D:\sample.xlsx";
var application = new Microsoft.Office.Interop.Excel.Application();
application.Workbooks.Open(path,
Type.Missing, true);
application.Worksheets[1].ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, path);
};
worker.RunWorkerAsync();
您可以使用pedamorf库,pedamorf是一个将文档,图像,网址,HTML和文本转换为PDF的服务器。它在很大程度上依赖于优秀的开源程序wkhtml2pdf,Libre Office和iTextSharp。提供了一个客户端库,可以从.NET应用程序中使用它来使用pedamorf提供的转换服务。
更多信息是here
到目前为止,更好的API来处理(创建,读取,导出到PDF / html等...)我知道的XLS / XLSX文件是FlexCel。它非常简单,非常快速且完全用C#编写。不需要Excel安装。
你会在这里找到它:http://www.tmssoftware.com/site/flexcelnet.asp(获得带有大量源代码示例的试用版)
如果您的项目有预算来获得许可证,我真的建议。