Подтвердить что ты не робот

С# 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);
4b9b3361

Ответ 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 (получите пробную версию с большим количеством примеров с исходным кодом)

Если у вас есть бюджет в вашем проекте для приобретения лицензии, я действительно рекомендую.