C#代碼實現(xiàn)打印Excel文檔的超詳細教程
在 .NET 環(huán)境中實現(xiàn)高質(zhì)量的 Excel 打印并非易事。開發(fā)者需要精確控制頁面邊距、紙張大小、網(wǎng)格線顯示等參數(shù),同時還要支持物理打印機和虛擬 PDF 打印機。如果沒有成熟的解決方案,這些需求往往會讓開發(fā)者花費大量時間在調(diào)優(yōu)和適配工作上。
本文將帶領讀者使用 Spire.XLS for .NET 結合 System.Drawing.Printing 命名空間,構建完整的 Excel 打印解決方案。通過本文的學習,你將掌握加載 Excel 文檔、配置打印參數(shù)、輸出到物理打印機以及將 Excel 轉(zhuǎn)換為 PDF 等核心技能。

一、準備工作
1.1 環(huán)境要求
- .NET Framework 4.0 及以上版本 或 .NET Core/.NET 5+
- Visual Studio 2017 及以上版本
1.2 安裝 Spire.XLS for .NET
通過 NuGet 包管理器安裝:
Install-Package Spire.XLS
或者在 Visual Studio 中通過 NuGet 包管理器搜索 Spire.XLS 進行安裝。
二、核心命名空間引入
using Spire.Xls; using System.Drawing.Printing;
三、打印到物理打印機
3.1 完整代碼示例
using Spire.Xls;
using System.Drawing.Printing;
namespace PrintExcel
{
class Program
{
static void Main(string[] args)
{
// 1. 加載 Excel 文檔
Workbook workbook = new Workbook();
workbook.LoadFromFile("Input.xlsx");
// 2. 遍歷并配置每個工作表
for (int i = 0; i < workbook.Worksheets.Count; i++)
{
Worksheet worksheet = workbook.Worksheets[i];
PageSetup pageSetup = worksheet.PageSetup;
// 設置頁邊距(單位:英寸)
pageSetup.TopMargin = 0.3;
pageSetup.BottomMargin = 0.3;
pageSetup.LeftMargin = 0.3;
pageSetup.RightMargin = 0.3;
// 打印時顯示網(wǎng)格線
pageSetup.IsPrintGridlines = true;
// 將所有列縮放到一頁
pageSetup.FitToPagesWide = 1;
pageSetup.FitToPagesTall = 0;
// 設置紙張大小為 A4
pageSetup.PaperSize = PaperSizeType.PaperA4;
}
// 3. 獲取打印機設置
PrinterSettings settings = workbook.PrintDocument.PrinterSettings;
// 4. 指定打印機名稱
settings.PrinterName = "Your Printer Name";
// 5. 執(zhí)行打印
workbook.PrintDocument.Print();
}
}
}3.2 代碼詳解
加載 Excel 文檔
Workbook workbook = new Workbook();
workbook.LoadFromFile("Input.xlsx");
創(chuàng)建 Workbook 對象并通過 LoadFromFile 方法加載需要打印的 Excel 文件。
頁面設置(PageSetup)
遍歷每個工作表,進行詳細的頁面配置:
- 頁邊距設置 :
TopMargin、BottomMargin、LeftMargin、RightMargin設置上下左右邊距,單位為英寸。 - 網(wǎng)格線 :
IsPrintGridlines = true讓打印結果保留網(wǎng)格線,更易于閱讀數(shù)據(jù)。 - 縮放設置 :
FitToPagesWide = 1:將所有列縮放到一頁寬FitToPagesTall = 0:不限制行數(shù),按實際高度分頁
- 紙張大小 :
PaperSize = PaperSizeType.PaperA4設置為 A4 紙
打印機配置與執(zhí)行
PrinterSettings settings = workbook.PrintDocument.PrinterSettings; settings.PrinterName = "Your Printer Name"; workbook.PrintDocument.Print();
獲取打印機設置對象,指定目標打印機名稱,最后調(diào)用 Print() 方法執(zhí)行打印。
四、打印到虛擬打印機(Microsoft Print to PDF)
4.1 完整代碼示例
using Spire.Xls;
using System.Drawing.Printing;
namespace PrintExcel
{
class Program
{
static void Main(string[] args)
{
// 加載 Excel 文檔
Workbook workbook = new Workbook();
workbook.LoadFromFile("Input.xlsx");
// 配置工作表(同前面示例)
for (int i = 0; i < workbook.Worksheets.Count; i++)
{
Worksheet worksheet = workbook.Worksheets[i];
PageSetup pageSetup = worksheet.PageSetup;
pageSetup.TopMargin = 0.3;
pageSetup.BottomMargin = 0.3;
pageSetup.LeftMargin = 0.3;
pageSetup.RightMargin = 0.3;
pageSetup.IsPrintGridlines = true;
pageSetup.FitToPagesWide = 1;
pageSetup.FitToPagesTall = 0;
pageSetup.PaperSize = PaperSizeType.PaperA4;
}
// 設置虛擬打印機
PrinterSettings settings = workbook.PrintDocument.PrinterSettings;
settings.PrintToFile = true; // 啟用打印到文件
settings.PrinterName = "Microsoft Print to PDF"; // 指定虛擬打印機
// 執(zhí)行打印并指定輸出 PDF 文件路徑
workbook.PrintDocument.Print("ToPdf.pdf");
}
}
}
4.2 關鍵點說明
與打印到物理打印機的主要區(qū)別:
| 設置項 | 說明 |
|---|---|
settings.PrintToFile = true | 啟用“打印到文件”模式 |
settings.PrinterName = "Microsoft Print to PDF" | 指定虛擬打印機名稱 |
workbook.PrintDocument.Print("ToPdf.pdf") | 使用帶參數(shù)的 Print 方法指定輸出文件路徑 |
五、常見打印機名稱參考
Windows 系統(tǒng)默認打印機
// 獲取默認打印機名稱 string defaultPrinter = new PrinterSettings().PrinterName;
常見打印機名稱
| 打印機類型 | 名稱示例 |
|---|---|
| Microsoft Print to PDF | "Microsoft Print to PDF" |
| Microsoft XPS Document Writer | "Microsoft XPS Document Writer" |
| Foxit Reader PDF Printer | "Foxit Reader PDF Printer" |
| 物理打印機 | 如 "HP LaserJet MFP M227fdw" |
獲取系統(tǒng)所有打印機
foreach (string printer in PrinterSettings.InstalledPrinters)
{
Console.WriteLine(printer);
}
六、更多頁面設置選項
6.1 常用 PageSetup 屬性
// 設置打印方向 pageSetup.Orientation = PageOrientationType.Landscape; // 橫向 pageSetup.Orientation = PageOrientationType.Portrait; // 縱向 // 設置縮放比例(1-100) pageSetup.Zoom = 90; // 設置頁眉/頁腳 pageSetup.HeaderMargin = 0.5; pageSetup.FooterMargin = 0.5; // 設置打印區(qū)域 pageSetup.PrintArea = "A1:F50"; // 設置標題行(每頁重復打?。? pageSetup.PrintTitleRows = "$1:$2"; // 設置水平/垂直居中 pageSetup.HorzAlignment = PageSetupHorzAlignment.Center; pageSetup.VertAlignment = PageSetupVertAlignment.Center;
6.2 紙張大小類型
pageSetup.PaperSize = PaperSizeType.PaperA3; pageSetup.PaperSize = PaperSizeType.PaperA4; pageSetup.PaperSize = PaperSizeType.PaperA5; pageSetup.PaperSize = PaperSizeType.PaperLetter; pageSetup.PaperSize = PaperSizeType.PaperLegal;
七、高級場景:靜默打印
如果需要實現(xiàn)無對話框的靜默打?。?/p>
// 隱藏打印對話框 workbook.PrintDocument.PrintController = new StandardPrintController(); // 設置打印份數(shù) workbook.PrintDocument.PrinterSettings.Copies = 2; // 靜默執(zhí)行打印 workbook.PrintDocument.Print();
八、異常處理
建議在實際應用中加入異常處理:
try
{
// 檢查打印機是否存在
if (!PrinterSettings.InstalledPrinters.Cast<string>().Any(p => p == printerName))
{
throw new Exception($"打印機 '{printerName}' 不存在");
}
workbook.PrintDocument.Print();
Console.WriteLine("打印成功!");
}
catch (Exception ex)
{
Console.WriteLine($"打印失?。簕ex.Message}");
}
九、總結
本文詳細介紹了使用 C# 和 Spire.XLS 庫打印 Excel 文檔的完整方案:
| 場景 | 關鍵代碼 |
|---|---|
| 物理打印機 | PrinterName 指定打印機 + Print() |
| PDF 輸出 | PrintToFile = true + Print("output.pdf") |
| 頁面配置 | 通過 PageSetup 對象設置邊距、紙張、縮放等 |
| 靜默打印 | PrintController = new StandardPrintController() |
Spire.XLS 提供了豐富的頁面設置選項,配合 System.Drawing.Printing 的打印機管理能力,可以靈活滿足各種 Excel 打印需求。無論是批量打印報表,還是將 Excel 轉(zhuǎn)換為 PDF 歸檔,本文提供的代碼都能作為可靠的基礎實現(xiàn)。
以上就是C#代碼實現(xiàn)打印Excel文檔的超詳細教程的詳細內(nèi)容,更多關于C#打印Excel的資料請關注腳本之家其它相關文章!
相關文章
C#調(diào)用百度翻譯實現(xiàn)翻譯HALCON的示例
HALCON示例程序的描述部分一直是英文的,看起來很不方便。本文就使用百度翻譯實現(xiàn)翻譯HALCON,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06
C#自動類型轉(zhuǎn)換與強制類型轉(zhuǎn)換的講解
今天小編就為大家分享一篇關于C#自動類型轉(zhuǎn)換與強制類型轉(zhuǎn)換的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01

