欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.NET輕松實現(xiàn)Excel轉(zhuǎn)PDF的三種方法詳解

 更新時間:2025年01月24日 09:50:48   作者:翔星  
這篇文章主要為大家詳細介紹了.NET中輕松實現(xiàn)Excel轉(zhuǎn)PDF的三種方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

前一段時間有網(wǎng)友問Excel轉(zhuǎn)pdf怎么轉(zhuǎn)pdf,小編幫他實現(xiàn)了一個,方法是使用EPPlus和PdfSharp組件實現(xiàn),由于依賴OfficeOpenXml他也沒有用上,后來小編又實現(xiàn)了二種不依賴OfficeOpenXml的方法。本文將介紹這三種方法實現(xiàn)Excel轉(zhuǎn)pdf。

一、EPPlus和PdfSharp組件實現(xiàn)

邏輯是先將Excel內(nèi)容轉(zhuǎn)換為HTML字符串,然后再將HTML字符串轉(zhuǎn)換為PDF文件。轉(zhuǎn)換過程中的格式和樣式可能會有一些差異,您可能需要根據(jù)需求進行進一步的調(diào)整和優(yōu)化。

使用方法

1、首先使用“NuGet 包管理器”安裝EPPlus和PdfSharp

2、在代碼頁面引用

using IronPdf;
using OfficeOpenXml;

3、建兩個方法ConvertExcelToPdf和ExcelToHtml

ConvertExcelToPdf方法用于將Excel文件轉(zhuǎn)換為PDF文件,ExcelToHtml這個方法將Excel工作表的內(nèi)容轉(zhuǎn)換為HTML字符串。代碼如下:

 public static void ConvertExcelToPdf(string excelFilePath, string pdfFilePath)
        {
            // 讀取Excel文件
            using (ExcelPackage package = new ExcelPackage(new FileInfo(excelFilePath)))
            {
                ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
                ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; // 假設(shè)要轉(zhuǎn)換的工作表是第一個工作表

                // 創(chuàng)建一個HTML字符串,將Excel內(nèi)容轉(zhuǎn)換為HTML
                string htmlContent = ExcelToHtml(worksheet);

                // 使用IronPDF將HTML字符串轉(zhuǎn)換為PDF
                var renderer = new HtmlToPdf();
                renderer.PrintOptions.MarginTop = 0;
                renderer.PrintOptions.MarginBottom = 0;
                renderer.PrintOptions.MarginLeft = 0;
                renderer.PrintOptions.MarginRight = 0;
                var pdf = renderer.RenderHtmlAsPdf(htmlContent);

                // 保存PDF文件
                pdf.SaveAs(pdfFilePath);
            }
        }

          public static string ExcelToHtml(ExcelWorksheet worksheet)
        {
            var sb = new StringBuilder();
            sb.AppendLine("<table>");
            var startRow = worksheet.Dimension.Start.Row;
            var endRow = worksheet.Dimension.End.Row;
            var startColumn = worksheet.Dimension.Start.Column;
            var endColumn = worksheet.Dimension.End.Column;

            for (int row = startRow; row <= endRow; row++)
            {
                sb.AppendLine("<tr>");

                for (int col = startColumn; col <= endColumn; col++)
                {
                    var cellValue = worksheet.Cells[row, col].Value;
                    sb.AppendLine("<td>" + (cellValue != null ? cellValue.ToString() : "") + "</td>");
                }

                sb.AppendLine("</tr>");
            }
            sb.AppendLine("</table>");
            return sb.ToString();
        }

  //調(diào)用方法
string excelFilePath = "C:\\Users\\user\\Desktop\\test.xlsx";
string pdfFilePath = "C:\\Users\\user\\Desktop\\test.pdf";
exceltopdf.ConvertExcelToPdf(excelFilePath, pdfFilePath);

主要有兩個方法:

ConvertExcelToPdf: 這個方法用于將Excel文件轉(zhuǎn)換為PDF文件。它首先使用ExcelPackage類從Excel文件中讀取數(shù)據(jù)。然后,調(diào)用ExcelToHtml方法將Excel內(nèi)容轉(zhuǎn)換為HTML字符串。接下來,使用IronPDF庫中的HtmlToPdf類將HTML字符串轉(zhuǎn)換為PDF對象。最后,將PDF對象保存到指定的PDF文件路徑中。

ExcelToHtml: 這個方法將Excel工作表的內(nèi)容轉(zhuǎn)換為HTML字符串。它使用StringBuilder來構(gòu)建HTML字符串。首先,它添加

標簽作為表格的開始。然后,通過遍歷工作表的行和列,將每個單元格的值添加到HTML字符串中作為一個td元素。最后,添加table標簽作為表格的結(jié)束,并將構(gòu)建好的HTML字符串返回。

缺點:此方法可能需要依賴office,網(wǎng)友回復(fù)反饋;另外需要用html進行格式處理,也是個麻煩事情。

效果:

二、Spire組件實現(xiàn)

邏輯是首先使用Spire.XLS庫加載Excel文件,并使用Spire.PDF庫創(chuàng)建PDF文檔。然后,我們遍歷Excel文件的每個工作表,將表格內(nèi)容逐個繪制到PDF頁面上。

使用方法

1、首先使用“NuGet 包管理器”安裝Spire。注意的是需要安裝Spire,不要安裝Spire.XLS和Spire.PDF否則會出現(xiàn)不兼容的問題。

2、在代碼頁面引用

using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Xls;

3、只需要建一個方法ConvertExcelToPdf。傳入要轉(zhuǎn)換的excel路徑和輸出的路徑,代碼如下:

   public static void ConvertExcelToPdf(string excelFilePath, string pdfFilePath)
        {
            // 加載Excel文件
            Workbook workbook = new Workbook();
            workbook.LoadFromFile(excelFilePath);
            // 創(chuàng)建PDF文檔
            PdfDocument pdfDocument = new PdfDocument();
            // 添加Excel表格內(nèi)容到PDF
            foreach (Worksheet sheet in workbook.Worksheets)
            {
                PdfPageBase pdfPage = pdfDocument.Pages.Add();
                PdfDocument document = new PdfDocument();
                PdfTrueTypeFont fonts = new PdfTrueTypeFont(@"C:\Windows\Fonts\simfang.ttf", 10f);
                // 獲取Excel表格的行數(shù)和列數(shù)
                int rowCount = sheet.LastRow + 1;
                int columnCount = sheet.LastColumn + 1;
                // 將Excel表格內(nèi)容逐個添加到PDF
                for (int row = 1; row <= rowCount; row++)
                {
                    for (int column = 1; column <= columnCount; column++)
                    {
                        string value = sheet.Range[row, column].Text;
                        if (value != null)
                        // 繪制單元格內(nèi)容到PDF頁面
                        {
                            pdfPage.Canvas.DrawString(value, fonts, PdfBrushes.Black, column * 70, row * 20);
                        }
                    }
                }
            }
            // 保存PDF文件
            pdfDocument.SaveToFile(pdfFilePath);
            Console.WriteLine("PDF轉(zhuǎn)換完成。");
        }
  //調(diào)用方法跟上面一樣

此方法需要注意的是Spire默認不支持中文,需要我們單獨引用中文字庫,在代碼的13行就是引用字庫的地方,大家可以把字庫拷貝到自己的項目引用。

缺點:默認不支持中文字庫,需要單獨引用;另外輸出格式不帶表格(可能可以調(diào));免費版本有水印,這個網(wǎng)上有解決方案,大家可以去搜索。

效果如下:

三、NPOI和iTextSharp組件實現(xiàn)

邏輯是通過使用NPOI庫讀取Excel文件,然后使用iTextSharp庫創(chuàng)建PDF文檔。

使用方法

1、首先使用“NuGet 包管理器”安裝NPOI和iTextSharp。

2、在代碼頁面引用

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using iTextSharp.text;
using iTextSharp.text.pdf;

3、需要建二個方法,ConvertExcelToPdf和GetChineseFont方法,GetChineseFont主要作業(yè)是字符格式轉(zhuǎn)換。ConvertExcelToPdf傳入要轉(zhuǎn)的excel路徑和輸出的路徑,代碼如下:

     public static void ConvertExcelToPdf2(string excelFilePath, string pdfFilePath)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            // 加載Excel文件
            using (FileStream fileStream = new FileStream(excelFilePath, FileMode.Open, FileAccess.Read))
            {
                IWorkbook workbook = new XSSFWorkbook(fileStream);
                ISheet sheet = workbook.GetSheetAt(0);
                // 創(chuàng)建PDF文檔
                Document document = new Document();
                // 創(chuàng)建PDF寫入器
                PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(pdfFilePath, FileMode.Create));
                // 打開PDF文檔
                document.Open();
                // 添加Excel表格內(nèi)容到PDF
                PdfPTable table = new PdfPTable(sheet.GetRow(0).LastCellNum);
                table.WidthPercentage = 100;

                foreach (IRow row in sheet)
                {
                    foreach (ICell cell in row)
                    {
                        string value = cell.ToString();
                        PdfPCell pdfCell = new PdfPCell(new Phrase(value, GetChineseFont()));
                        table.AddCell(pdfCell);
                    }
                }
                document.Add(table);
                // 關(guān)閉PDF文檔
                document.Close();
            }
            Console.WriteLine("PDF轉(zhuǎn)換完成。");
        }
        static Font GetChineseFont()
        {
            var baseFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
            return new Font(baseFont, 12);
        }
 //調(diào)用方法跟方法一一樣
//歡迎關(guān)注公眾號:DOTNET開發(fā)跳槽,領(lǐng)取海量面試題。加微信號xbhpnet入群交流

此方法跟Spire一樣默認不支持中文,需要我們單獨引用中文字庫,方法GetChineseFont就是處理引用中文字庫。另外需要需要在 NuGet 里添加 System.Text.Encoding.CodePages并注冊,否則會報錯,注冊如下。

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

缺點:此方法也比較坑,不支持中文,還需要引用額外的字庫支持組件CodePages。

效果如下:

結(jié)語

本文介紹了.NET三種方法實現(xiàn)Excel轉(zhuǎn)pdf,他們各有優(yōu)點,第一種可以自定義樣式,第二種依賴獨立組件,第三種顯示效果更佳,從使用效果來看小編推薦第三種。其實還有很多組件實現(xiàn)Excel轉(zhuǎn)pdf,比如Aspose.Cells,有的需要授權(quán)收取費用、大家自己可以研究一下。本項目是基于.NET7在windows下測試運行,在linux下沒有實驗過,大家可以嘗試一下。

到此這篇關(guān)于.NET輕松實現(xiàn)Excel轉(zhuǎn)PDF的三種方法詳解的文章就介紹到這了,更多相關(guān).NET Excel轉(zhuǎn)PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • aspx與ascx,ashx的用法總結(jié)

    aspx與ascx,ashx的用法總結(jié)

    這篇文章主要是對aspx與ascx,ashx的用法進行了詳細的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • HTML服務(wù)器控件和WEB服務(wù)器控件的區(qū)別和聯(lián)系介紹

    HTML服務(wù)器控件和WEB服務(wù)器控件的區(qū)別和聯(lián)系介紹

    學習asp.net的時候一會用Html服務(wù)器控件,一會用Web服務(wù)器控件,起初做起例子來也挺迷糊的,下面對這兩個控件研究了一下做個筆記在此與大家分享下,感興趣的朋友可以了解下
    2013-08-08
  • Asp.Net Core輕松學習系列之配置文件

    Asp.Net Core輕松學習系列之配置文件

    這篇文章主要給大家介紹了關(guān)于Asp.Net Core輕松學習系列之配置文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • 提交頁面的定位--scrollIntoView的用法

    提交頁面的定位--scrollIntoView的用法

    提交頁面的定位--scrollIntoView的用法...
    2007-03-03
  • asp.net 文件下載實現(xiàn)代碼

    asp.net 文件下載實現(xiàn)代碼

    文件下載代碼,Copy 別人的.需要的朋友可以參考下。
    2010-03-03
  • .NET實現(xiàn)倉儲Repository(AI)的操作方法

    .NET實現(xiàn)倉儲Repository(AI)的操作方法

    倉儲模式是一種在應(yīng)用程序中使用的設(shè)計模式,它將數(shù)據(jù)訪問邏輯與業(yè)務(wù)邏輯分離,通過倉儲接口和倉儲實現(xiàn)類,您可以定義和實現(xiàn)數(shù)據(jù)的增刪改查操作,這篇文章主要介紹了.NET?實現(xiàn)倉儲Repository(AI),需要的朋友可以參考下
    2023-09-09
  • .NET?Core配置TLS?Cipher(套件)的詳細過程

    .NET?Core配置TLS?Cipher(套件)的詳細過程

    本文以.NET?5為例,只不過針對.NET?Core?3或3.1通過工具掃描出的協(xié)議套件結(jié)果略有所差異,但不影響我們對安全套件的配置,我們使用OpenSSL生成自簽名證書,對.NET?Core配置TLS?Cipher相關(guān)知識感興趣的朋友一起看看吧
    2021-12-12
  • .NET 擴展實現(xiàn)代碼

    .NET 擴展實現(xiàn)代碼

    增強.net的功能需要用到了擴展實現(xiàn)代碼,大家可以參考下
    2008-09-09
  • asp.net刪除文件session丟失

    asp.net刪除文件session丟失

    如果你曾經(jīng)修改了ASP.NET應(yīng)用程序(dll文件),與修改了bin文件夾或Web.config文件(添加/刪除/重命名的文件等),而該網(wǎng)站在運行,你可能已經(jīng)注意到,這將導致在AppDomain的重新啟動
    2010-09-09
  • ASP.NET中application對象的使用介紹

    ASP.NET中application對象的使用介紹

    這篇文章主要介紹了ASP.NET中application對象的使用,需要的朋友可以參考下
    2014-04-04

最新評論