2015-12-16 4 views
2

Я пытаюсь улучшить производительность проекта C# Winform.Печать рабочего листа Excel/Workbook

Раньше генерация файла Excel осуществлялась в течение 100000 мс (с использованием Office.Interop.Excel). Использование ClosedXml составляет около 5000 мс. Действительно здорово. Но теперь мне нужно напечатать этот документ Excel (только рабочий лист или всю книгу)

я делал это раньше (с помощью офисного Interop):

public void PrintCurrentWorksheet() 
{ 
    this._activeWorksheet.PrintOut(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
} 
public void PrintWorkbook() 
{ 
    this._activeWorbook.PrintOut(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
} 

Но теперь типа _activeWorkbook и _activeWorksheet являются XLWorkbook и IXLWorksheet. Таким образом, нет метода Printout. Я не мог найти метод печати, и я полагаю, что нет, потому что OpenXml не полагается на Excel. Я прав?

Я не смог найти команду Shell для печати рабочего листа.

Итак, есть ли простой способ распечатать рабочую книгу или рабочий лист без использования Interop?

ответ

4

Библиотеки, позволяющие читать и записывать файлы, совместимые с Excel, как большинство библиотек, «headless».

Код в них может использоваться для записи данных в формате, который понимает Excel (и совместимые приложения) Excel в другой формат файла или принтер. Потому что это выходит за рамки библиотеки. Чтение и запись файлов - это одно, а правильное их содержание - это совсем другое.

Существуют библиотеки, которые поддерживают печать файлов Excel, таких как Aspose.

Вы всегда можете только use interop to print, генерируя документ, используя библиотеки. Или вы можете использовать send the "print" verb to Excel, который будет печатать с настройками по умолчанию на принтере по умолчанию.

+0

«Настройки по умолчанию для принтера по умолчанию» Вы имеете в виду настройки по умолчанию для файла Excel? Поэтому я мог бы использовать «print verb» и ClosedXml 'PrintArea' для печати одного рабочего листа? – ZwoRmi

+0

Не знаю, попробуй. :) – CodeCaster

 Смежные вопросы

  • Нет связанных вопросов^_^