You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需Interop,使用NPOI打印XLSX文件的分步实现问询

无需转PDF的XLSX打印实现方案(禁用Interop)

第一步:用NPOI 5.6.0配置打印参数到XLSX文件

在生成XLSX文件时,先把横向打印、页面铺满的配置写入工作表,后续打印工具会自动读取这些设置。

using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using System.IO;

// 初始化工作簿和工作表(假设你已有生成逻辑,这里补充打印配置)
var workbook = new XSSFWorkbook();
var sheet = workbook.CreateSheet("打印测试");

// 1. 开启横向打印
sheet.PrintSetup.Landscape = true;

// 2. 设置内容铺满单页的宽度和高度
sheet.FitToPage = true;
sheet.PrintSetup.FitWidth = 1; // 强制铺满1页宽度
sheet.PrintSetup.FitHeight = 1; // 强制铺满1页高度

// 可选:指定打印区域(按需设置)
sheet.SetPrintArea(0, 0, sheet.LastRowNum, sheet.GetRow(0).LastCellNum - 1);

// 保存配置好的XLSX
using (var fs = new FileStream("output.xlsx", FileMode.Create, FileAccess.Write))
{
    workbook.Write(fs);
}

第二步:用第三方库直接打印XLSX

NPOI本身无打印能力,推荐以下两个无需Interop的免费库:

选项1:Spire.XLS Free(适合小文件打印)

免费版支持读取XLSX的打印配置,直接调用系统打印机,仅对打印页数有限制(最多10页)。

using Spire.Xls;

// 加载已配置打印参数的XLSX
Workbook workbook = new Workbook();
workbook.LoadFromFile("output.xlsx");

Worksheet sheet = workbook.Worksheets[0];

// 方式1:弹出打印对话框让用户选择打印机
sheet.PrintDialog();

// 方式2:静默打印到默认打印机
// sheet.Print();

选项2:GemBox.Spreadsheet(每月100次免费操作额度)

支持读取文件内的打印配置,适配多框架(.NET Framework/.NET Core/.NET 6+)。

using GemBox.Spreadsheet;

// 激活免费许可证
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");

// 加载XLSX文件
ExcelFile workbook = ExcelFile.Load("output.xlsx");
ExcelWorksheet sheet = workbook.Worksheets[0];

// 弹出打印对话框
sheet.Print();

// 静默打印到默认打印机
// sheet.Print(new PrintOptions() { ShowPrintDialog = false });

注意事项

  • 打印前务必确认XLSX的打印参数已正确写入,第三方库会自动继承这些设置,无需重复配置。
  • 根据项目框架选择对应版本的第三方库,避免兼容性问题。
  • 优先通过打印对话框测试参数是否生效,再切换到静默打印模式。

内容的提问来源于stack exchange,提问作者khalid tounoussi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:57:33