Example #1
0
        /// <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;      //还原默认打印机,不破坏设置
        }
Example #2
0
        /// <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;      //还原默认打印机设置,不破坏原有设置
        }