当前位置: 首页 > news >正文

Excel处理控件Spire.XLS系列教程:C# 打印 Excel 文档

Excel 文档的常规打印操作十分简单。然而,一旦涉及特殊打印需求,情况就会变得比较麻烦。比如,仅打印工作表中的选定区域,在每一页重复打印标题行,或是将工作表调整至一页内打印,都需要一些特定的设置与操作。本文将介绍如何使用Spire.XLS for .NET 在 C# 中通过页面设置对 Excel 打印选项进行设置,以及如何将 Excel 文档发送到打印机

安装 Spire.XLS for .NET

E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品,支持国产化。首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。

Spire.XLS for .NET试用下载

PM> Install-Package Spire.XLS

C# 通过页面设置设置 Excel 打印选项

Excel 的页面设置功能提供了多种选项,用于控制工作表的打印方式。比如,是否打印批注、是否打印网格线,以及指定要打印的单元格区域等。Spire.XLS 提供了 PageSetup 对象来设置这些 Excel 打印选项。具体步骤如下:

  • 创建一个 Workbook 类的对象。
  • 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
  • 通过 Workbook.Worksheets[index] 属性获取指定工作表。
  • 通过 Workheet.PageSetup 属性获取 PageSetup 对象。
  • 通过 PageSetup 对象下的属性设置页边距、打印区域、标题行、打印质量等。
  • 使用 Workbook.SaveToFile() 方法保存结果文件。
using Spire.Xls;

namespace PrintOptions
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建workbook对象
            Workbook workbook = new Workbook();

            // 加载Excel文档
            workbook.LoadFromFile("测试.xlsx");

            // 获取第一张工作表
            Worksheet worksheet = workbook.Worksheets[0];

            // 获取PageSetup对象
            PageSetup pageSetup = worksheet.PageSetup;

            // 设置页边距
            pageSetup.TopMargin = 0.3;
            pageSetup.BottomMargin = 0.3;
            pageSetup.LeftMargin = 0.3;
            pageSetup.RightMargin = 0.3;

            // 指定打印区域
            pageSetup.PrintArea = "A1:F7";

            // 指定标题行
            pageSetup.PrintTitleRows = "$1:$2";

            // 允许打印行/列标题
            pageSetup.IsPrintHeadings = true;

            // 允许打印网格线
            pageSetup.IsPrintGridlines = true;

            // 允许打印显示在工作表上的注释
            pageSetup.PrintComments = PrintCommentType.InPlace;

            // 设置打印质量(dpi)
            pageSetup.PrintQuality = 300;

            // 允许以黑白模式打印工作表
            pageSetup.BlackAndWhite = true;

            // 设置打印顺序
            pageSetup.Order = OrderType.OverThenDown;

            // 将工作表打印到一页纸上
            pageSetup.IsFitToPage = true;

            // 保存结果文档
            workbook.SaveToFile("页面打印选项.xlsx", ExcelVersion.Version2016);
        }
    }
}

设置Excel工作表打印页面选项

C# 使用打印对话框打印 Excel 文档

打印对话框可让用户选择特定打印任务的选项。例如,用户可以指定要使用的打印机。以下是使用 Spire.XLS for .NET 将 Excel 文档发送到打印对话框的步骤:

  • 创建 Workbook 类的对象。
  • 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
  • 创建 PrintDialog 类的对象。
  • 通过 PrintDialog 对象下的属性指定打印机设置。
  • 将打印对话框应用到工作簿。
  • 通过 Workbook.PrintDocument 属性从工作簿中获取 PrintDocument 对象。
  • 使用 PrintDocument.Print() 方法调用打印对话框并开始打印。
using System;
using Spire.Xls;
using System.Drawing.Printing;
using System.Windows.Forms;

namespace PrintExcelUsingPrintDialog
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 创建workbook对象
            Workbook workbook = new Workbook();

            // 加载Excel文档
            workbook.LoadFromFile("测试.xlsx");

            // 将工作表打印到一页纸上
            PageSetup pageSetup = workbook.Worksheets[0].PageSetup;
            pageSetup.IsFitToPage = true;

            // 创建PrintDialog对象
            PrintDialog dialog = new PrintDialog();

            // 指定打印机设置    
            dialog.AllowCurrentPage = true;
            dialog.AllowSomePages = true;
            dialog.AllowSelection = true;
            dialog.UseEXDialog = true;
            dialog.PrinterSettings.Duplex = Duplex.Simplex;

            // 将打印对话框应用到工作簿 
            workbook.PrintDialog = dialog;

            // 创建PrintDocument对象
            PrintDocument printDocument = workbook.PrintDocument;

            // 调用打印对话框
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                printDocument.Print();
            }
        }
    }
}

将 Excel 文档发送到打印对话框

C# 静默打印 Excel 文档

如果不想看到打印对话框或打印过程,可以将 Excel 文档静默地打印到指定的打印机。具体步骤如下:

  • 创建 Workbook 类的对象。
  • 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
  • 将打印控制器设置为 StandardPrintController,以防止显示打印过程。
  • 通过 Workbook.PrintDocument.PrinterSettings 属性从工作簿中获取打印机设置对象。
  • 通过 PrinerSettings 对象下的属性指定打印机名称、双面模式和打印页数。
  • 使用 Workbook.PrintDocument.Print() 方法打印工作簿。
using Spire.Xls;
using System.Drawing.Printing;

namespace SilentlyPrint
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建Workbook对象
            Workbook workbook = new Workbook();

            // 加载Excel文档
            workbook.LoadFromFile("测试.xlsx");

            // 将工作表打印到一页纸上  
            PageSetup pageSetup = workbook.Worksheets[0].PageSetup;
            pageSetup.IsFitToPage = true;

            // 将打印控制器设置为StandardPrintController,防止显示打印过程
            workbook.PrintDocument.PrintController = new StandardPrintController();

            // 从工作簿中获取打印机设置
            PrinterSettings settings = workbook.PrintDocument.PrinterSettings;

            // 指定打印机名称、双面打印模式和打印页数
            settings.PrinterName = "HP LaserJet P1007";
            settings.Duplex = Duplex.Simplex;
            settings.FromPage = 1;
            settings.ToPage = 3;

            // 打印工作簿
            workbook.PrintDocument.Print();
        }
    }
}
http://www.dtcms.com/a/108376.html

相关文章:

  • 【算法】双指针
  • GIT ---- 解决【fatal: Authentication failed for】
  • 【案例89】达梦数据库优化器参数导致的SQL执行错误
  • 在Ubuntu20.04开发Dify插件教程,部署Dify插件脚手架
  • 深度学习 Deep Learning 第15章 表示学习
  • 针对 MySQL 数据库的详细说明,分类列出临时资源(临时表、游标、未提交事务、会话变量、预编译语句)的创建、清理方式及未清理后果,并以表格总结
  • [CH32] RISC-V汇编指令解释
  • linux下springboot项目守护进程编写
  • arm64平台下linux访问寄存器
  • Python----机器学习(线性回归:前向传播和损失函数)
  • 【C++基础知识】 C 预处理器中的 #line 指令详解
  • RabbitMQ应用2
  • Linux系统之SFTP-搭建SFTP服务器
  • ui-tars和omni-parser使用
  • JavaScript 模块化详解( CommonJS、AMD、CMD、ES6模块化)
  • 网络安全-等级保护(等保) 1-0 等级保护制度公安部前期发文总结
  • 蓝桥杯 web 表格数据转化(组件挂载、模板字符串)
  • 【硬件视界9】网络硬件入门:从网卡到路由器
  • C# 扩展方法
  • 跨网连接vscode
  • 银联三级等保定级报告
  • CMake学习--Window下VSCode 中 CMake C++ 代码调试操作方法
  • 闭环SOTA!北航DiffAD:基于扩散模型实现端到端自动驾驶「多任务闭环统一」
  • 面基spring如何处理循环依赖问题
  • conda 清除 tarballs 减少磁盘占用 、 conda rename 重命名环境、conda create -n qwen --clone 当前环境
  • 机器学习、深度学习和神经网络
  • vscode调试python(transformers库的llama为例)
  • C#实现HiveQL建表语句中特殊数据类型的包裹
  • 用docker部署goweb项目
  • RainbowDash 的 Robot