Qualcuno ha idea di come stampare un file excel in modo programmatico utilizzando C# e l'Interoperabilità di Excel? Se sì, puoi fornire il codice?Stampa di Excel utilizzando Interop
risposta
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
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);
grazie mille !!! questo è stato MOLTO utile! – yeahumok
Cool, felice di poterti aiutare. :-) –
non ti capita di sapere come mostrare un dialogo di stampa invece di stampare subito il documento ... vero? – yeahumok