C#Excel Interop - 在调用Worksheet.ExportAsFixedFormat时抑制“发布”对话框

问题描述 投票:22回答:4

我正在使用Excel Interop打开xlsx文件并将其另存为pdf文档。在调用“ExportAsFixedFileFormat”方法时,将显示标题为“Publishing”的对话框以指示进度。如何禁止或隐藏此对话框?我在其他论坛上看到了一些没有令人满意的解决方案的类似问题,但希望有人从那时起就解决了这个问题。

enter image description here

码:

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);
c# .net excel export interop
4个回答
1
投票

也许我没有回答你的问题,但我会尽力提供帮助。据我所知,不建议在后端处理中使用Excel Interop。您遇到了其中一个问题,但还有一些问题。有第三方替代方案可以与Excel格式进行交互,其中一些是开源的,一些是商业的。我强烈建议你看看其中一个:ClosedXMLNPOI。两者都是开源和免费的。


0
投票

如何在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();

0
投票

您可以使用pedamorf库,pedamorf是一个将文档,图像,网址,HTML和文本转换为PDF的服务器。它在很大程度上依赖于优秀的开源程序wkhtml2pdf,Libre Office和iTextSharp。提供了一个客户端库,可以从.NET应用程序中使用它来使用pedamorf提供的转换服务。

更多信息是here


0
投票

到目前为止,更好的API来处理(创建,读取,导出到PDF / html等...)我知道的XLS / XLSX文件是FlexCel。它非常简单,非常快速且完全用C#编写。不需要Excel安装。

你会在这里找到它:http://www.tmssoftware.com/site/flexcelnet.asp(获得带有大量源代码示例的试用版)

如果您的项目有预算来获得许可证,我真的建议。

© www.soinside.com 2019 - 2024. All rights reserved.