2014-11-10 7 views
7

Ho visto molti post per quanto riguarda l'impostazione del vassoio della stampante in C# per il documento word. Ho bisogno di una soluzione per Excel.Impostare il vassoio della stampante quando si stampa il documento excel

Una soluzione migliore, se possibile, per qualsiasi documento. Un qualche tipo di metodo posso passare un percorso di file e il vassoio.

EDIT Finora ho provato quanto segue ma non sono state apportate modifiche visibili nelle impostazioni della stampante.

PrinterSettings ps = new PrinterSettings(); 
ps.PrinterName = @"\\localhost\HP-4515n"; 
var dps = ps.DefaultPageSettings; 
dps.PaperSource.RawKind = 260; 

O

PrinterSettings ps = new PrinterSettings(); 
ps.PrinterName = @"\\localhost\HP-4515n"; 
PaperSource psrc = new PaperSource(); 
psrc.RawKind = 260; 
psrc.SourceName = "unknown"; 
dps.PaperSource = psrc; 

EDIT 2

sto hardcoding RawKind poiché il vassoio in qualche modo non mostra nelle papersources.

E attualmente quando stampo ad es. Documento Excel mostro il PrinterDialog, ottenere il nome della stampante selezionata e passarlo alla proprietà della stampante attiva di interoperabilità Excel. Ma ora ho bisogno di stampare una massa di documenti e ho bisogno di impostare la stampante selezionata ed è la proprietà appositamente il vassoio a livello di programmazione.

+0

correlati: http://stackoverflow.com/questions/770230/excel-vba-print-to-specific-printer-tray – Mitch

risposta

1

@sysboard, vedo dallo MSDN page on the PrinterSettings class che la proprietà DefaultPageSettings non ha un metodo set, solo un metodo get. Non sono sicuro che questo sia accessibile da classi esterne ... Potresti esaminare il PageSettings class poiché sembra che abbia un costruttore sovraccarico che ti permette di passare una stampante specificata, e ha un metodo set su PaperSource.

+0

Vedere edit2 per la risposta/maggiori informazioni – sysboard

0

Perché si sta codificando il codice psrc.RawKind = 260; Per impostare RawKind per un'origine carta è disponibile l'enumerazione PaperSourceKind. provare il seguente codice

PrintDocument doc = new PrintDocument(); 
PaperSource pSource = new PaperSource(); 
pSource.RawKind = (int)PaperSourceKind.Middle; 
doc.DefaultPageSettings.PaperSource = pSource; 
+0

Vedere edit2 per la risposta/altre informazioni – sysboard

1

È possibile ottenere le papersources disponibili utilizzando il codice folowing:

PrintDocument printDoc1 = new PrintDocument(); 
List<PaperSource> psList = new List<PaperSource>(); 
PaperSource pkSource; 
for (int i = 0; i < printDoc1.PrinterSettings.PaperSources.Count; i++) 
{ 
    pkSource = printDoc1.PrinterSettings.PaperSources[i]; 
    psList.Add(pkSource); 
} 

ora presenti queste opzioni per l'utente e ottenere l'ingresso su quale origine della carta da utilizzare, dire la sua il primo, si può fare:

PrintDocument doc = new PrintDocument(); 
doc.DefaultPageSettings.PaperSource = psList[0]; 
doc.Print(); 
+0

Vedere edit2 per la risposta/ulteriori informazioni – sysboard

Problemi correlati