Нахождение диалогового окна предварительного просмотра Excel в C#, которое позволяет пользователю сменить принтер
Я делаю автоматизацию Office из приложения C# в Excel. Я пытаюсь открыть диалоговое окно предварительного просмотра (или диалоговое окно для предварительного просмотра). Я также хочу, чтобы у пользователя была возможность выбрать другой шрифт, отличный от печати по умолчанию.
я пытался
sheet1.PrintPreview();
а также
sheet1.PrintOutEx(1, 1, 1, true);
но я не вижу способа для пользователя выбрать другой принтер.
2 ответа
Да, есть встроенный диалог для вашего приложения Windows. Если у вас есть ссылка на автоматизацию Excel Application
объект, вы сможете вызвать почти любой встроенный диалог, доступный в Excel.
2 ссылки, которые могут оказаться полезными:
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.dialogs.aspx
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlbuiltindialog.aspx
Пример: чтобы открыть диалоговое окно предварительного просмотра, вы должны сделать следующее:
var excelApp = new Excel.Application();
bool dialogResult =
excelApp.Dialogs[Excel.XlBuiltInDialog.xlDialogPrintPreview].Show(
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Вы меняете принтер по умолчанию для объекта Application, а затем распечатываете лист, как показано ниже. Принтеры, установленные на компьютере, можно получить из System.Drawing.Printing.PrinterSettings.InstalledPrinters
а затем отобразить их пользователю в каком-то диалоге, а затем установить ActivePrinter
экземпляра приложения Excel, например, и затем отобразите диалоговое окно предварительного просмотра:
using System.Drawing.Printing;
using Excel = Microsoft.Office.Interop.Excel;
Excel.Application application = new Excel.Application();
Excel.Workbook workbook = application.Workbooks.Add();
Excel.Worksheet worksheet = workbook.Sheets[1];
var printers = PrinterSettings.InstalledPrinters;
Console.WriteLine("Select printer (type the number):");
Console.WriteLine();
for (int i = 0; i < printers.Count; i++)
{
Console.WriteLine("{0} - {1}", i, printers[i]);
}
int selection = Convert.ToInt32(Console.ReadLine());
application.ActivePrinter = printers[selection];
worksheet.PrintPreview();