使用Interop打印Excel

yea*_*mok 15 c# printing excel interop

有没有人知道如何使用C#和Excel Interop以编程方式打印excel文件?如果是这样,你能提供代码吗?

Mik*_*lum 26

要进行打印,可以使用Worksheet.PrintOut()方法.您可以通过传入Type.Missing来省略任何或所有可选参数.如果省略所有这些,则默认从活动打印机打印出一份副本.但是您可以使用参数来设置要打印,排序等的副本数量.有关详细信息,请参阅Worksheet.PrintOut()方法的帮助.

他们在帮助文件中显示的示例是:

private void PrintToFile()
{
    // Make sure the worksheet has some data before printing.
    this.Range["A1", missing].Value2 = "123";
    this.PrintOut(1, 2, 1, false, missing, true, false, missing);
}
Run Code Online (Sandbox Code Playgroud)

但除非您需要更改默认设置,否则只需为所有参数传递Type.Missing即可.这是一个使用自动化打开Excel工作簿,打印第一页,然后关闭的示例:

void PrintMyExcelFile()
{
    Excel.Application excelApp = new Excel.Application();

    // Open the Workbook:
    Excel.Workbook wb = excelApp.Workbooks.Open(
        @"C:\My Documents\Book1.xls",
        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);

    // Get the first worksheet.
    // (Excel uses base 1 indexing, not base 0.)
    Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1];

    // Print out 1 copy to the default printer:
    ws.PrintOut(
        Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
        Type.Missing, Type.Missing, Type.Missing, Type.Missing);

    // Cleanup:
    GC.Collect();
    GC.WaitForPendingFinalizers();

    Marshal.FinalReleaseComObject(ws);

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

    excelApp.Quit();
    Marshal.FinalReleaseComObject(excelApp);
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

麦克风