2009-05-12 8 views

risposta

20

Per stampare, è possibile utilizzare il metodo Worksheet.PrintOut(). È possibile omettere alcuni o tutti gli argomenti facoltativi passando in Type.Missing. Se si omettono tutti, per impostazione predefinita verrà stampata una copia dalla stampante attiva. Ma è possibile utilizzare gli argomenti per impostare il numero di copie da stampare, fascicolazione, ecc. Per ulteriori informazioni, consultare la guida del metodo Worksheet.PrintOut().

L'esempio che mostrano nel file di aiuto è:

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

Ma se non è necessario modificare le impostazioni di default, si può semplicemente passare Type.Missing per tutti gli argomenti. Ecco un esempio utilizzando l'automazione per aprire una cartella di lavoro di Excel, stampare la prima pagina, e quindi arrestare:

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

Spero che questo aiuti!

Mike

+0

grazie mille !!! questo è stato MOLTO utile! – yeahumok

+0

Cool, felice di poterti aiutare. :-) –

+0

non ti capita di sapere come mostrare un dialogo di stampa invece di stampare subito il documento ... vero? – yeahumok

1

miglioramento importante è il codice per selezionare la stampante, ad esempio:

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