2009-05-12 9 views

ответ

20

Для печати вы можете использовать метод 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); 
} 

Но если вам не нужно, чтобы изменить настройки по умолчанию, вы можете просто передать в Type.Missing для всех аргументов. Вот пример использования автоматизации, чтобы открыть Excel Workbook, печать первой страницы, а затем закрыл:

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); 
} 

Надеется, что это помогает!

Майк

+0

спасибо большое !!! это было ОЧЕНЬ полезно! – yeahumok

+0

Прохладный, рад, что я мог бы помочь. :-) –

+0

вы бы не знали, как показать диалог печати, а не сразу распечатать документ ... не так ли? – yeahumok

1

Важное улучшение код для выбора принтера, например:

var printers = System.Drawing.Printing.PrinterSettings.InstalledPrinters; 

int printerIndex = 0; 

foreach(String s in printers) 
{ 
    if (s.Equals("Name of Printer")) 
    { 
     break; 
    } 
    printerIndex++; 
} 

xlWorkBook.PrintOut(Type.Missing, Type.Missing, Type.Missing, Type.Missing,printers[printerIndex], Type.Missing, Type.Missing, Type.Missing);