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

C#代碼實現(xiàn)從PDF中提取表格并另存為Excel文件

 更新時間:2026年02月25日 08:23:54   作者:2501_93070778  
這篇文章主要為大家詳細介紹了如何使用?Spire.Office?for?.NET將?PDF?中的表格提取并導出為?Excel?文件,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下

將 PDF 中的表格提取并轉(zhuǎn)換為 Excel 格式具有諸多優(yōu)勢,例如可以在更靈活、更加熟悉的環(huán)境中對數(shù)據(jù)進行編輯、分析和可視化處理。這對于需要處理大量表格數(shù)據(jù)的研究人員、數(shù)據(jù)分析師以及各類專業(yè)人士來說尤為重要。

本文將介紹如何使用 Spire.Office for .NET,通過 C# 和 VB.NET 將 PDF 中的表格提取并導出為 Excel 文件。

安裝 Spire.Office for .NET

首先,需要在 .NET 項目中引用 Spire.Office for .NET 包中的 Spire.Pdf.dllSpire.Xls.dll。

其中:

  • Spire.PDF 用于從 PDF 表格中提取數(shù)據(jù);
  • Spire.XLS 用于根據(jù)提取到的數(shù)據(jù)生成 Excel 文檔。

你可以通過官網(wǎng)下載對應(yīng)的 DLL 文件后手動添加引用,也可以直接通過 NuGet 進行安裝,更加便捷高效。

PM> Install-Package Spire.Office

在 C#、VB.NET 中提取 PDF 文件中的表格并另存為Excel文件

Spire.PDF for .NET 提供了 PdfTableExtractor.ExtractTable(int pageIndex) 方法,用于從可搜索的 PDF 指定頁面中提取表格。
通過 PdfTable.GetText(int rowIndex, int columnIndex) 方法,可以獲取表格中指定單元格的文本內(nèi)容。隨后,借助 Spire.XLS for .NET 提供的 Worksheet.Range[row, column].Value 屬性,即可將這些數(shù)據(jù)寫入 Excel 工作表。

具體操作步驟如下:

  • 創(chuàng)建 PdfDocument 類的實例。
  • 使用 PdfDocument.LoadFromFile() 方法加載示例 PDF 文件。
  • 調(diào)用 PdfTableExtractor.ExtractTable() 方法,從指定頁面提取表格。
  • 使用 PdfTable.GetText() 方法獲取表格中指定單元格的文本內(nèi)容。
  • 創(chuàng)建 Workbook 對象。
  • 通過 Worksheet.Range.Value 屬性,將從 PDF 獲取的單元格數(shù)據(jù)寫入工作表。
  • 使用 Workbook.SaveToFile() 方法,將工作簿保存為 Excel 文件。

下面的代碼示例演示了如何提取 PDF 文檔中的所有表格,并將每個表格分別寫入同一個工作簿中的獨立工作表。

示例代碼:

using Spire.Pdf;
using Spire.Pdf.Utilities;
using Spire.Xls;

namespace ExtractTablesToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 PdfDocument 對象
            PdfDocument doc = new PdfDocument();

            // 加載示例 PDF 文件
            doc.LoadFromFile(@"C:\Users\Administrator\Desktop\table.pdf");

            // 創(chuàng)建 Workbook 對象
            Workbook workbook = new Workbook();

            // 清除默認的工作表
            workbook.Worksheets.Clear();

            // 初始化 PdfTableExtractor 類的實例
            PdfTableExtractor extractor = new PdfTableExtractor(doc);

            // 聲明 PdfTable 數(shù)組
            PdfTable[] tableList = null;

            int sheetNumber = 1;

            // 遍歷 PDF 的每一頁
            for (int pageIndex = 0; pageIndex < doc.Pages.Count; pageIndex++)
            {
                // 從指定頁面提取表格
                tableList = extractor.ExtractTable(pageIndex);

                // 判斷表格列表是否為空
                if (tableList != null && tableList.Length > 0)
                {
                    // 遍歷當前頁面中的每一個表格
                    foreach (PdfTable table in tableList)
                    {
                        // 添加一個新的工作表
                        Worksheet sheet = workbook.Worksheets.Add(
                            String.Format("sheet{0}", sheetNumber)
                        );

                        // 獲取當前表格的行數(shù)和列數(shù)
                        int row = table.GetRowCount();
                        int column = table.GetColumnCount();

                        // 遍歷表格的行和列
                        for (int i = 0; i < row; i++)
                        {
                            for (int j = 0; j < column; j++)
                            {
                                // 獲取指定單元格的文本內(nèi)容
                                string text = table.GetText(i, j);

                                // 將文本寫入 Excel 指定單元格
                                sheet.Range[i + 1, j + 1].Value = text;
                            }
                        }

                        sheetNumber++;
                    }
                }
            }

            // 保存為 Excel 文件
            workbook.SaveToFile("ToExcel.xlsx", ExcelVersion.Version2013);
        }
    }
}

方法補充

C#提取PDF文件中的表格并轉(zhuǎn)換為Excel和CSV表格

完整代碼示例:

using System.Text;
using Spire.Pdf;
using Spire.Pdf.Utilities;
using Spire.Xls;

namespace ExtractTablesToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 PdfDocument 對象并加載示例PDF文件
            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile("示例.pdf");

            // 創(chuàng)建 Workbook 對象并清除默認工作表
            Workbook workbook = new Workbook();
            workbook.Worksheets.Clear();

            // 初始化 PdfTableExtractor 類的實例
            PdfTableExtractor extractor = new PdfTableExtractor(doc);

            // 聲明 PdfTable 數(shù)組
            PdfTable[]? tableList = null;

            int sheetNumber = 1;

            // 循環(huán)遍歷頁面
            for (int pageIndex = 0; pageIndex < doc.Pages.Count; pageIndex++)
            {
                // 從特定頁面提取表格
                tableList = extractor.ExtractTable(pageIndex);

                // 判斷表格列表是否為空
                if (tableList != null && tableList.Length > 0)
                {
                    // 遍歷列表中的表格
                    foreach (PdfTable table in tableList)
                    {
                        // 添加工作表
                        Worksheet sheet = workbook.Worksheets.Add(string.Format("Table_{0}", sheetNumber));

                        // 獲取特定表格的行數(shù)和列數(shù)
                        int row = table.GetRowCount();
                        int column = table.GetColumnCount();

                        // 循環(huán)遍歷行和列
                        for (int i = 0; i < row; i++)
                        {
                            for (int j = 0; j < column; j++)
                            {
                                // 從特定單元格獲取文本
                                string text = table.GetText(i, j);

                                // 將文本寫入指定單元格
                                sheet.Range[i + 1, j + 1].Value = text;
                            }
                        }
                        sheet.SaveToFile("output/表格/CSV表格.csv", ",", Encoding.UTF8);
                        sheetNumber++;
                    }
                }
            }

            // 保存為Excel工作簿
            workbook.SaveToFile("output/表格/Excel表格.xlsx", ExcelVersion.Version2013);
            doc.Close();
            workbook.Dispose();
        }
    }
}

C# 提取 PDF 中的表格

如果你需要快速預覽表格數(shù)據(jù)(例如,開發(fā)調(diào)試或驗證提取結(jié)果),可以直接通過控制臺實時輸出結(jié)果,無需生成額外文件,節(jié)省開發(fā)時間。

從 PDF 表格中提取數(shù)據(jù)的關(guān)鍵方法:

  • PdfDocument:表示一個 PDF 文件。
  • LoadFromFile:加載要處理的 PDF 文件。
  • PdfTableExtractor:基于視覺線索檢測 PDF 中的表格。
  • ExtractTable(pageIndex):提取指定頁碼的所有表格,返回 PdfTable 數(shù)組。
  • GetRowCount()/GetColumnCount():檢索每個表格的行數(shù)和列數(shù)。
  • GetText(rowIndex, columnIndex):從指定單元格中提取文本。
using Spire.Pdf;
using Spire.Pdf.Utilities;

namespace ExtractPdfTable
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建PdfDocument對象
            PdfDocument pdf = new PdfDocument();

            // 加載PDF文件
            pdf.LoadFromFile("表格.pdf");

            // 初始化PdfTableExtractor類的實例
            PdfTableExtractor extractor = new PdfTableExtractor(pdf);


            // 循環(huán)遍歷頁面
            for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
            {
                // 從特定頁面提取表格
                PdfTable[] tableList = extractor.ExtractTable(pageIndex);

                // 判斷表格列表是否為空
                if (tableList != null && tableList.Length > 0)
                {
                    int tableNumber = 1;
                    // 循環(huán)遍歷列表中的表格
                    foreach (PdfTable table in tableList)
                    {
                        Console.WriteLine($"\n第 {pageIndex + 1} 頁的第 {tableNumber} 個表格:");
                        Console.WriteLine("-----------------------------------");

                        // 獲取特定表格的行數(shù)和列數(shù)
                        int row = table.GetRowCount();
                        int column = table.GetColumnCount();

                        // 循環(huán)遍歷行和列
                        for (int i = 0; i < row; i++)
                        {
                            for (int j = 0; j < column; j++)
                            {
                                // 從特定單元格獲取文本
                                string text = table.GetText(i, j);

                                // 將單元格文本打印到控制臺并帶有分隔符
                                Console.Write($"{text}\t");
                            }
                            // 每行后換行
                            Console.WriteLine();
                        }
                        tableNumber++;
                    }
                }
            }

            // 關(guān)閉文檔
            pdf.Close();
        }
    }
}

C# 將 PDF 表格導出為 CSV

CSV(逗號分隔值)是表格數(shù)據(jù)的行業(yè)標準,與 Excel、Google Sheets 和數(shù)據(jù)庫兼容。此方法通過引用單元格和處理特殊字符,將提取的表格格式化為有效的 CSV 文件。

提取 PDF 表格到 CSV 的主要特點:

  • StreamWriter:增量寫入數(shù)據(jù)到 CSV 文件,減少大型 PDF 文件的內(nèi)存占用。
  • 特殊字符處理:按 CSV 標準轉(zhuǎn)義單元格中的逗號和雙引號,避免列錯位。
  • 工具兼容:生成的 CSV 可直接用 Excel 打開,無需手動調(diào)整格式,減少后續(xù)操作成本。
  • 編碼兼容:UTF-8 編碼確保中文、特殊符號在 Excel 中正常顯示(避免打開時亂碼)。
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Text;

namespace ExtractTableToCsv
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建PdfDocument對象
            PdfDocument pdf = new PdfDocument();

            // 加載PDF文件
            pdf.LoadFromFile("表格.pdf");

            // 創(chuàng)建StreamWriter對象以高效寫入CSV
            using (StreamWriter csvWriter = new StreamWriter("PDF表格.csv", false, Encoding.UTF8))
            {
                // 創(chuàng)建PdfTableExtractor對象
                PdfTableExtractor extractor = new PdfTableExtractor(pdf);

                // 循環(huán)遍歷頁面
                for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
                {
                    // 從特定頁面提取表格
                    PdfTable[] tableList = extractor.ExtractTable(pageIndex);

                    // 判斷表格列表是否為空
                    if (tableList != null && tableList.Length > 0)
                    {
                        // 循環(huán)遍歷列表中的表格
                        foreach (PdfTable table in tableList)
                        {
                            // 獲取特定表格的行數(shù)和列數(shù)
                            int row = table.GetRowCount();
                            int column = table.GetColumnCount();

                            // 循環(huán)遍歷行
                            for (int i = 0; i < row; i++)
                            {
                                // 創(chuàng)建列表存儲數(shù)據(jù)
                                List<string> rowData = new List<string>();
                                // 循環(huán)遍歷列
                                for (int j = 0; j < column; j++)
                                {
                                    // 從表格單元格檢索文本
                                    string cellText = table.GetText(i, j).Replace("\"", "\"\"");
                                    // 將單元格文本添加到列表并用雙引號括起來
                                    rowData.Add($"\"{cellText}\"");
                                }
                                // 用逗號連接單元格并寫入CSV
                                csvWriter.WriteLine(string.Join(",", rowData));
                            }
                        }
                    }
                }
            }
        }
    }
}

到此這篇關(guān)于C#代碼實現(xiàn)從PDF中提取表格并另存為Excel文件的文章就介紹到這了,更多相關(guān)C#提取PDF表格并存為Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

册亨县| 中西区| 佳木斯市| 元谋县| 长沙县| 慈利县| 南部县| 塔河县| 洪雅县| 安国市| 获嘉县| 邯郸县| 武宁县| 崇明县| 吴桥县| 奇台县| 桐庐县| 临汾市| 兴城市| 曲靖市| 新兴县| 和林格尔县| 黄梅县| 饶平县| 高平市| 雷州市| 洛扎县| 安化县| 鹤壁市| 昌乐县| 平凉市| 慈溪市| 青岛市| 泰安市| 兴国县| 和顺县| 平山县| 手游| 三门县| 贵州省| 万盛区|