Prueba esto (probado y comprobado)
Estoy asumiendo que ha establecido referencia a Excel y ya han declarado sus objetos como
Microsoft.Office.Interop.Excel.Application xlexcel;
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
Microsoft.Office.Interop.Excel.Range xlRange;
object misValue = System.Reflection.Missing.Value;
Esto va en la parte posterior del código de .
// Get the current printer
string Defprinter = null;
Defprinter = xlexcel.ActivePrinter;
// Set the printer to Microsoft XPS Document Writer
xlexcel.ActivePrinter = "Microsoft XPS Document Writer on Ne01:";
// Setup our sheet
var _with1 = xlWorkSheet.PageSetup;
// A4 papersize
_with1.PaperSize = Excel.XlPaperSize.xlPaperA4;
// Landscape orientation
_with1.Orientation = Excel.XlPageOrientation.xlLandscape;
// Fit Sheet on One Page
_with1.FitToPagesWide = 1;
_with1.FitToPagesTall = 1;
// Normal Margins
_with1.LeftMargin = xlexcel.InchesToPoints(0.7);
_with1.RightMargin = xlexcel.InchesToPoints(0.7);
_with1.TopMargin = xlexcel.InchesToPoints(0.75);
_with1.BottomMargin = xlexcel.InchesToPoints(0.75);
_with1.HeaderMargin = xlexcel.InchesToPoints(0.3);
_with1.FooterMargin = xlexcel.InchesToPoints(0.3);
// Print the range
xlRange.PrintOutEx(misValue, misValue, misValue, misValue,
misValue, misValue, misValue, misValue);
// Set printer back to what it was
xlexcel.ActivePrinter = Defprinter;
Muchas gracias! Pero, ¿cómo supiste "en Ne01"? – MemphiZ
Puede encontrarlo usando 'Defprinter = xlexcel.ActivePrinter;' y luego imprimirlo en la ventana inmediata. Ese código le dirá cuál es su impresora activa. Para probarlo, cambie la impresora a XPS y luego ejecute el código anterior. –
Encontré esta forma de detectar qué puerto Ne usar: http://stackoverflow.com/questions/5424932/how-to-determine-what-ne-port-the-adobe-pdf-printer-is-on. Además de pageSetup.Zoom tiene que establecerse en falso para que FitToPagesWide/Tall funcione y use range.ExportAsFixedFormat (XlFixedFormatType.xlTypeXPS, outputPath); en lugar de PrintOutEx. Tal vez pueda actualizar su código anterior :) – MemphiZ