Excel 互操作打印

本文关键字:打印 互操作 Excel | 更新日期: 2023-09-27 18:36:16

我需要使用以下打印设置打印 excel 工作表的选定区域(我使用 Range.Select()) 选择了该区域:

打印机:Microsoft XPS 文档编写器
打印所选内容
景观方向
答4
正常边距
在一页上适合工作表

如何使用_Worksheet.PrintOut或_Worksheet.PrintOutEx实现此目的?

提前感谢!

Excel 互操作打印

我假设您已经设置了对 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;

为了使"适合一页的工作表"正常工作,我们还应该将 Zoom 属性设置为 false。

一页装合页

_with1.FitToPagesWide = 1;
_with1.FitToPagesTall = 1;
_with1.Zoom = False;