5
我需要使用下面的打印設置打印Excel工作表的選定區域(我與Range.Select()選擇):Excel的互操作打印
打印機:微軟XPS文檔寫入
打印選擇
橫向
A4
正常邊距
在一頁良券
我怎樣才能做到這一點使用_Worksheet.PrintOut或_Worksheet.PrintOutEx?
在此先感謝!
我需要使用下面的打印設置打印Excel工作表的選定區域(我與Range.Select()選擇):Excel的互操作打印
打印機:微軟XPS文檔寫入
打印選擇
橫向
A4
正常邊距
在一頁良券
我怎樣才能做到這一點使用_Worksheet.PrintOut或_Worksheet.PrintOutEx?
在此先感謝!
試試這個(久經考驗)
我假設你已經設置參考Excel和已申報的對象,如
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;
這正好中的代碼的最新部分。
// 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;
對於'單頁上的匹配頁'的工作,我們也應該將縮放屬性設置爲false。在一頁
//良券
_with1.FitToPagesWide = 1;
_with1.FitToPagesTall = 1;
_with1.Zoom = False;
非常感謝您!但你怎麼知道「在Ne01上」? – MemphiZ
您可以使用'Defprinter = xlexcel.ActivePrinter;'找到它,然後將它打印在即時窗口中。該代碼會告訴你什麼是你的活動打印機。要測試它,請將打印機更改爲XPS,然後運行上述代碼。 –
我發現這種方式來檢測使用哪個Ne端口:http://stackoverflow.com/questions/5424932/how-to-determine-what-ne-port-the-adobe-pdf-printer-is-on。除了pageSetup.Zoom必須設置爲false以使FitToPagesWide/Tall工作並使用range.ExportAsFixedFormat(XlFixedFormatType.xlTypeXPS,outputPath);而不是PrintOutEx。也許你可以更新你的代碼:) – MemphiZ