С# Excel Interop - отключение диалогового окна "Публикация" при вызове Worksheet.ExportAsFixedFormat
Я использую Excel Interop, чтобы открыть файл xlsx и сохранить его как документ PDF. После вызова метода ExportAsFixedFileFormat отображается диалоговое окно "Публикация" для указания прогресса. Как я могу подавить или скрыть этот диалог? Я видел несколько подобных вопросов на других форумах без удовлетворительного решения, но, надеюсь, кто-то решил это с тех пор.
![введите описание изображения здесь]()
код:
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);
Ответы
Ответ 1
Возможно, я не отвечаю на ваш вопрос, но я постараюсь быть полезным. Насколько мне известно, не рекомендуется использовать Excel Interop для обработки в фоновом режиме. Вы столкнулись с одной из своих проблем, но есть и другие. Существуют сторонние альтернативы для взаимодействия с форматами Excel, некоторые из них - с открытым исходным кодом, а некоторые - коммерческие. Я бы настоятельно рекомендовал взглянуть на один из них:
ClosedXML и NPOI. Оба являются открытыми и бесплатными.
Ответ 2
Как обрабатывать его на 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();
Ответ 3
Вы можете использовать библиотеку педамора, pedamorf - это сервер, который преобразует документы, изображения, URL-адреса, html и текст в PDF. Он в значительной степени опирается на отличные программы с открытым исходным кодом wkhtml2pdf, Libre Office и iTextSharp. Клиентская библиотека предоставляется и может использоваться из приложения .NET для использования услуг преобразования, предоставляемых pedamorf.
Дополнительная информация здесь
Ответ 4
На сегодняшний день лучший API для обработки (создания, чтения, экспорта в PDF/html и т.д.) файлов XLS/XLSX, которые я знаю, это FlexCel. Это действительно простой, невероятно быстрый и полный сценарий на С#. Не требуется установка Excel.
Вы найдете его здесь: http://www.tmssoftware.com/site/flexcelnet.asp (получите пробную версию с большим количеством примеров с исходным кодом)
Если у вас есть бюджет в вашем проекте для приобретения лицензии, я действительно рекомендую.