1

Excelファイルを生成するアプリケーションがあります。以下の方法で印刷しようとすると、最初のページが印刷されません。

asを介して Excel ファイル名filenameとプリンター設定を渡します。次に、指定されたファイルを開き、ワークブックを開いてシート全体を印刷するために使用します。プリンターとして XPS プリンターを選択すると、出力ファイル名が 2 回取得されます (最初のシートを印刷するときと、他のシートを印刷するとき)。印刷メソッドを変更したときに、出力ファイルへの呼び出しが作成されていませんでした。PrintDialogprinterSettingsMicrosoft.Office.Interop.Excel.ApplicationMicrosoft.Office.Interop.Excel.Workbookwb.Worksheets.PrintOutEx()wb.Worksheets.PrintOutEx(1,1, ... )

public static void PrintWorksheet(string fileName, PrinterSettings printerSettings )
    {
        Application excelApp = null;//excel application
        Microsoft.Office.Interop.Excel.Workbook wb = null;//workbook
        try
        {
            excelApp = new Microsoft.Office.Interop.Excel.Application();//initialize excel app

            wb = excelApp.Workbooks.Open(
            fileName,
                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); //open workbook


                wb.Worksheets.PrintOutEx(1, wb.Worksheets.Count, printerSettings.Copies, false, printerSettings.PrinterName, false, printerSettings.Collate, false, Type.Missing);//calling print method
        }
        catch(Exception e)
        {
            string err = e.Message;
        }
        finally
        {
//closing the excel app and workbook

            GC.Collect();
            GC.WaitForPendingFinalizers();

            if (wb != null)
            {

                Marshal.FinalReleaseComObject(wb.Worksheets);

                wb.Close(false, Type.Missing, Type.Missing);

                Marshal.FinalReleaseComObject(wb);
            }

            if (excelApp != null)
            {
                excelApp.Quit();

                Marshal.FinalReleaseComObject(excelApp);
            }
        }


    }

誰でも私を助けることができますか?

4

1 に答える 1

1

Have you tried doing the following method instead NamedRange.PrintOutEx Method

Microsoft.Office.Tools.Excel.NamedRange myNamedRange = Globals.Sheet1.namedRange1;

myNamedRange.PrintOutEx(
  1, 
  wb.Worksheets.Count,
  printerSettings.Copies,
  false, 
  printerSettings.PrinterName, 
  false, 
  printerSettings.Collate, 
  false
);
于 2013-01-26T13:06:19.930 に答える