C# 设置Excel打印选项及打印excel文档

C# 设置Excel打印选项及打印excel文档

打印Excel文档是一个很常见的操作,但有时候我们会碰到各种不同的打印需求,例如只打印一个Excel工作表的其中一部分,或打印时每页都有表头,或把工作表中超出1页所有内容打印到1页上等等,这时我们需要对Excel的打印选项进行设置。这篇文章主要是分享如何使用Excel组件及C#来设置一些常见的Excel打印选项及打印Excel文档。

下面这个Excel工作表共含有17行,20列数据:


目标:将第7,8行的所有数据打印到一页上,并打印表头(标题行)。

创建一个WinForm项目,使用如下命名空间:

using System;
using System.Drawing.Printing;
using System.Windows.Forms;
using Spire.Xls;
 

步骤1:创建一个新的workbook对象并加载Excel文档。

Workbook workbook = new Workbook();
workbook.LoadFromFile("Sample.xlsx");

步骤2:获取该Excel文档的第一个工作表,并设置打印选项。

Worksheet sheet = workbook.Worksheets[0];

下面列出几个常设置的打印选项:


设置打印区域/范围:

sheet.PageSetup.PrintArea = "A7:T8";

设置打印表头(标题行):

sheet.PageSetup.PrintTitleRows = "$1:$1";

设置excel工作表缩放为一页宽一页高:

sheet.PageSetup.FitToPagesWide = 1;
sheet.PageSetup.FitToPagesTall = 1;

这里可以设置它们的值为0或1来改变打印效果以满足不同需求。

 

除此之外还可以设置页面方向及打印页面大小等:

设置页面方向:

sheet.PageSetup.Orientation =PageOrientationType.Portrait;

设置打印页面大小:

sheet.PageSetup.PaperSize =PaperSizeType.PaperA3;


步骤3:创建一个新的PrintDialog对象,设置dialog属性及打印页面范围并打印文档。

PrintDialog dialog = new PrintDialog();
dialog.AllowPrintToFile = true;
dialog.AllowCurrentPage = true;
dialog.AllowSomePages = true;
dialog.AllowSelection = true;
dialog.UseEXDialog = true;
dialog.PrinterSettings.Duplex = Duplex.Simplex;
dialog.PrinterSettings.FromPage = 0;
dialog.PrinterSettings.ToPage = 8;
dialog.PrinterSettings.PrintRange = PrintRange.SomePages;
workbook.PrintDialog = dialog;
PrintDocument pd =workbook.PrintDocument;
if (dialog.ShowDialog() == DialogResult.OK)
{ pd.Print(); }

运行程序会出现如下对话框:



这里我选择MicrosoftXPS Document Writer将这个excel文档打印为XPS格式,得到的XPS文件如下:



全部代码:

using System;
using System.Drawing.Printing;
using System.Windows.Forms;
using Spire.Xls;
 
namespace Print_Excel_in_csharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
           InitializeComponent();
        }
 
        private voidbutton1_Click(object sender, EventArgs e)
        {
           Workbook workbook = newWorkbook();
           workbook.LoadFromFile("Sample.xlsx");
           
           Worksheet sheet = workbook.Worksheets[0];
           sheet.PageSetup.PrintArea = "A7:T8";
           sheet.PageSetup.PrintTitleRows = "$1:$1";
           sheet.PageSetup.FitToPagesWide = 1;
           sheet.PageSetup.FitToPagesTall = 1;
           //sheet.PageSetup.Orientation =PageOrientationType.Landscape;
           //sheet.PageSetup.PaperSize = PaperSizeType.PaperA3;
           
           PrintDialog dialog = newPrintDialog();
           dialog.AllowPrintToFile = true;
           dialog.AllowCurrentPage = true;
           dialog.AllowSomePages = true;
           dialog.AllowSelection = true;
           dialog.UseEXDialog = true;
           dialog.PrinterSettings.Duplex = Duplex.Simplex;
           dialog.PrinterSettings.FromPage = 0;
           dialog.PrinterSettings.ToPage = 8;
           dialog.PrinterSettings.PrintRange = PrintRange.SomePages;
           workbook.PrintDialog = dialog;
           PrintDocument pd = workbook.PrintDocument;
           if (dialog.ShowDialog() == DialogResult.OK)
           { pd.Print(); }
        }
    }
}


  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
您可以使用 C# 的 Microsoft.Office.Interop.Word 和 Microsoft.Office.Interop.Excel 库,将 Word 和 Excel 文件转换为 PDF 格式,然后使用第三方的 PDF 打印工具批量打印这些 PDF 文件。以下是具体步骤: 1. 引用 Microsoft.Office.Interop.Word 和 Microsoft.Office.Interop.Excel 库,如果您使用的是 Visual Studio,可以在“解决方案资源管理器”中右键单击项目名称,选择“添加”->“引用”->“COM”选项卡,然后勾选“Microsoft Word xx.x Object Library”和“Microsoft Excel xx.x Object Library”; 2. 创建 Word 和 Excel 应用程序对象,打开需要转换的 Word 和 Excel 文件; 3. 使用应用程序对象的“ExportAsFixedFormat”方法将 Word 和 Excel 文件转换为 PDF 格式; 4. 关闭 Word 和 Excel 文件,销毁应用程序对象; 5. 下载并安装一个第三方的 PDF 打印工具,如 Adobe Acrobat Reader 或 Foxit Reader; 6. 使用 C# 调用第三方的 PDF 打印工具,将需要打印的 PDF 文件添加到打印列表中; 7. 配置打印选项,如打印机、打印质量等; 8. 点击“打印”按钮,即可批量打印 PDF 文件。 需要注意的是,在转换 Word 或 Excel 文件为 PDF 格式时,可能会出现格式错位、字体不一致等问题。建议在转换前进行一次预览,确保转换后的 PDF 文件符合预期。同时,如果您打算开发一个批量打印工具,还需要考虑如何对文件进行批量处理、如何处理转换和打印过程中可能发生的异常等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值