如何使用C#代码从 PDF 中提取表格并另存为Excel文件

将 PDF 中的表格提取并转换为 Excel 格式具有诸多优势,例如可以在更灵活、更加熟悉的环境中对数据进行编辑、分析和可视化处理。这对于需要处理大量表格数据的研究人员、数据分析师以及各类专业人士来说尤为重要。

本文将介绍如何使用 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 表格中提取数据;

  • Spire.XLS 用于根据提取到的数据生成 Excel 文档。

你可以通过官网下载对应的 DLL 文件后手动添加引用,也可以直接通过 NuGet 进行安装,更加便捷高效。

cs 复制代码
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) 方法,可以获取表格中指定单元格的文本内容。随后,借助 Spire.XLS for .NET 提供的 Worksheet.Range[row, column].Value 属性,即可将这些数据写入 Excel 工作表。

具体操作步骤如下:

  1. 创建 PdfDocument 类的实例。

  2. 使用 PdfDocument.LoadFromFile() 方法加载示例 PDF 文件。

  3. 调用 PdfTableExtractor.ExtractTable() 方法,从指定页面提取表格。

  4. 使用 PdfTable.GetText() 方法获取表格中指定单元格的文本内容。

  5. 创建 Workbook 对象。

  6. 通过 Worksheet.Range.Value 属性,将从 PDF 获取的单元格数据写入工作表。

  7. 使用 Workbook.SaveToFile() 方法,将工作簿保存为 Excel 文件。

下面的代码示例演示了如何提取 PDF 文档中的所有表格,并将每个表格分别写入同一个工作簿中的独立工作表。

示例代码:

cs 复制代码
using Spire.Pdf;
using Spire.Pdf.Utilities;
using Spire.Xls;

namespace ExtractTablesToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

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

            // 创建 Workbook 对象
            Workbook workbook = new Workbook();

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

            // 初始化 PdfTableExtractor 类的实例
            PdfTableExtractor extractor = new PdfTableExtractor(doc);

            // 声明 PdfTable 数组
            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)
                        );

                        // 获取当前表格的行数和列数
                        int row = table.GetRowCount();
                        int column = table.GetColumnCount();

                        // 遍历表格的行和列
                        for (int i = 0; i < row; i++)
                        {
                            for (int j = 0; j < column; j++)
                            {
                                // 获取指定单元格的文本内容
                                string text = table.GetText(i, j);

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

                        sheetNumber++;
                    }
                }
            }

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

申请临时许可证

如果您希望去除生成文档中的评估提示信息,或解除功能限制,可以申请一个为期 30 天的试用许可证进行体验。

相关推荐
jianwuhuang8229 分钟前
Kimi怎么导出pdf
人工智能·chatgpt·pdf·deepseek·ai导出鸭
daanpdf1 小时前
四六级翻译《中国文化概况》双语批注版pdf百度网盘
pdf
程序员老油条1 小时前
Excel合并的单元格拆分并批量填充为已有数据
excel
QQ12958455042 小时前
FERP50 - Excel以存储过程方式访问数据仓库
数据仓库·spark·excel
daanpdf2 小时前
古籍原文周易(易经)全文完整版PDF
pdf
daanpdf2 小时前
大学英语四级试卷历年真题及答案PDF电子版百度网盘
pdf
Omics Pro2 小时前
免费!糖蛋白质组学数据分析
开发语言·深度学习·数据挖掘·数据分析·r语言·excel·知识图谱
hikktn3 小时前
Excel模板智能转PDF:零硬编码的通用打印解决方案
windows·pdf
开始脱发的自然卷3 小时前
用 Excel 手算一个 1-6-1 MLP:前向传播、损失、反向传播与参数更新
excel
m0_502724953 小时前
vue3生成pdf
前端·javascript·vue.js·pdf