1

C# アプリケーションから Excel への Office オートメーションを行っています。印刷プレビュー ダイアログ (またはプレビュー オプション付きの印刷ダイアログ) を表示しようとしています。また、ユーザーがデフォルトのものとは異なる印刷を選択できるようにしたいと考えています。

私が試してみました

sheet1.PrintPreview();

sheet1.PrintOutEx(1, 1, 1, true);

しかし、ユーザーが別のプリンターを選択する方法がわかりません。

4

2 に答える 2

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);
于 2012-09-24T16:46:45.317 に答える
1

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();
于 2012-09-24T14:11:52.973 に答える