最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#代碼實現(xiàn)打印Excel文檔的超詳細教程

 更新時間:2026年05月21日 08:18:15   作者:秋天的落葉鋪滿小路  
在?.NET?環(huán)境中實現(xiàn)高質(zhì)量的?Excel?打印并非易事,本文將帶大家使用?Spire.XLS?for?.NET?結合?System.Drawing.Printing?命名空間,構建完整的?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、LeftMarginRightMargin 設置上下左右邊距,單位為英寸。
  • 網(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的示例

    C#調(diào)用百度翻譯實現(xiàn)翻譯HALCON的示例

    HALCON示例程序的描述部分一直是英文的,看起來很不方便。本文就使用百度翻譯實現(xiàn)翻譯HALCON,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C#中利用代理實現(xiàn)觀察者設計模式詳解

    C#中利用代理實現(xiàn)觀察者設計模式詳解

    學習模式注重精髓而非模板,本文為了便于說明假定了三方并對三方功能進行了劃分,實際應用并不拘泥于此。如果情況合適將數(shù)據(jù)(文檔)類設計為單件模式也是一種很不錯的選擇
    2014-01-01
  • c#如何實現(xiàn)接口事件

    c#如何實現(xiàn)接口事件

    這篇文章主要介紹了c#如何實現(xiàn)接口事件,幫助大家更好的理解和學習c#,感興趣的朋友可以了解下
    2020-10-10
  • C#正則表達式獲取下拉菜單(select)的相關屬性值

    C#正則表達式獲取下拉菜單(select)的相關屬性值

    這篇文章主要介紹了C#正則表達式獲取下拉菜單(select)的相關屬性值,比如可以獲得name屬性的值、value值、指定值,需要的朋友可以參考下
    2014-07-07
  • C#自動類型轉(zhuǎn)換與強制類型轉(zhuǎn)換的講解

    C#自動類型轉(zhuǎn)換與強制類型轉(zhuǎn)換的講解

    今天小編就為大家分享一篇關于C#自動類型轉(zhuǎn)換與強制類型轉(zhuǎn)換的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • C#中使用@聲明變量示例(逐字標識符)

    C#中使用@聲明變量示例(逐字標識符)

    這篇文章主要介紹了C#中使用@聲明變量示例(逐字標識符)在C#中,@符號不僅可以加在字符串常量之前,使字符串不作轉(zhuǎn)義之用,還可以加在變量名之前,使變量名與關鍵字不沖突,這種用法稱為“逐字標識符”,需要的朋友可以參考下
    2015-06-06
  • Winform實現(xiàn)鼠標可穿透的窗體鏤空效果

    Winform實現(xiàn)鼠標可穿透的窗體鏤空效果

    這篇文章主要介紹了Winform實現(xiàn)鼠標可穿透的窗體鏤空效果的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • WPF微信聊天和通訊錄按鈕樣式代碼分享

    WPF微信聊天和通訊錄按鈕樣式代碼分享

    這篇文章主要為大家分享了WPF微信聊天和通訊錄按鈕樣式代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 深入解析C#中的abstract抽象類

    深入解析C#中的abstract抽象類

    這篇文章主要介紹了深入解析C#中的abstract抽象類,包括定義抽象類等C#面相對象編程中的基礎知識,需要的朋友可以參考下
    2016-01-01
  • C#中PuppeteerSharp庫的應用詳解

    C#中PuppeteerSharp庫的應用詳解

    PuppeteerSharp是一個針對Google Chrome瀏覽器的高級API庫,這篇文章主要為大家詳細介紹了PuppeteerSharp庫在C#中的具體應用,需要的小伙伴可以了解下
    2024-01-01

最新評論

灵宝市| 西吉县| 丰县| 昆明市| 安远县| 永顺县| 彭水| 广灵县| 冀州市| 射洪县| 罗江县| 竹北市| 叙永县| 邯郸市| 正阳县| 湟源县| 丰镇市| 商丘市| 绥芬河市| 健康| 麻江县| 万全县| 福州市| 即墨市| 孝感市| 墨竹工卡县| 泗水县| 尉犁县| 阿勒泰市| 富平县| 宕昌县| 保定市| 尉氏县| 湖州市| 泸西县| 八宿县| 辽阳县| 旬邑县| 松潘县| 新竹县| 历史|