/// <summary> /// 打印工作簿的基础方法 /// </summary> /// <param name="Page">打印的页码范围</param> /// <param name="Number">打印的份数</param> /// <param name="Printer">执行打印的打印机</param> /// <param name="FilePath">打印到文件的路径</param> /// <returns></returns> private async Task PrintBase(Range?Page = null, int Number = 1, IPrinter?Printer = null, PathText?FilePath = null) { var Application = PackBook.Application; var(Beg, End) = (Page ?? Range.All).GetOffsetAndEnd(PageCount); var ActivePrinter = Application.ActivePrinter; await Task.Run(() => PackBook.PrintOut (Beg + 1, End + 1, Number, ActivePrinter: MSOfficeRealize.PrinterName(ActivePrinter, Printer, FilePath), PrintToFile: FilePath == null ? null : true, PrToFileName: FilePath?.Path)); Application.ActivePrinter = ActivePrinter; //还原默认打印机,不破坏设置 }
/// <summary> /// 打印工作簿的基本方法 /// </summary> /// <param name="Page">要打印的页码范围</param> /// <param name="Number">要打印的份数</param> /// <param name="Printer">执行打印的打印机</param> /// <param name="FilePath">如果要打印到文件,则指定这个参数以指定输出路径</param> /// <returns></returns> private async Task PrintBase(Range?Page, int Number = 1, IPrinter?Printer = null, PathText?FilePath = null) { var(Beg, End) = (Page ?? Range.All).GetOffsetAndEnd(PageCount); var Application = PackDocument.Application; var ActivePrinter = Application.ActivePrinter; Application.ActivePrinter = MSOfficeRealize.PrinterName(ActivePrinter, Printer, FilePath); var PageRange = $"{Beg + 1}-{End + 1}"; await(FilePath == null ? Task.Run(() => PackDocument.PrintOut( Range: WdPrintOutRange.wdPrintRangeOfPages, Pages: PageRange, Copies: Number)) : Task.Run(() => PackDocument.PrintOut( Range: WdPrintOutRange.wdPrintRangeOfPages, Pages: PageRange, Copies: Number, PrintToFile: true, OutputFileName: FilePath.Path))); Application.ActivePrinter = ActivePrinter; //还原默认打印机设置,不破坏原有设置 }