C#Excel Interop - 在调用Worksheet.ExportAsFixedFormat时抑制“发布”对话框
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#Excel Interop - 在调用Worksheet.ExportAsFixedFormat时抑制“发布”对话框相关的知识,希望对你有一定的参考价值。
我正在使用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);
也许我没有回答你的问题,但我会尽力提供帮助。据我所知,不建议在后端处理中使用Excel Interop。您遇到了其中一个问题,但还有一些问题。有第三方替代方案可以与Excel格式进行交互,其中一些是开源的,一些是商业的。我强烈建议你看看其中一个:ClosedXML和NPOI。两者都是开源和免费的。
如何在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(获得带有大量源代码示例的试用版)
如果您的项目有预算来获得许可证,我真的建议。
以上是关于C#Excel Interop - 在调用Worksheet.ExportAsFixedFormat时抑制“发布”对话框的主要内容,如果未能解决你的问题,请参考以下文章
C#Office.Interop.Excel.dll读写表格
C#Office.Interop.Excel.dll读写表格
C#Office.Interop.Excel.dll读写表格