如何使用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.dll 和 Spire.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 天的试用许可证进行体验。

相关推荐
泡海椒5 小时前
JQuick-Excel dateFormat 转换实战:日期值与 FORMAT 显示格式的边界
开发语言·python·excel
2501_933670797 小时前
2027风控策略岗秋招准备:SQL、Excel、建模的优先级与项目路径
人工智能·sql·excel
流形填表8 小时前
在线考试平台导入题库:Excel格式与字段对照
excel
开开心心就好1 天前
办公软件卸载不干净?专用工具一键清残留
java·前端·人工智能·智能手机·kafka·excel·memcache
全速向光1 天前
Excel函数系列09:公式又长又乱?LET+LAMBDA+MAP+REDUCE,自定义函数一次讲透
excel
web打印社区1 天前
C-Lodop 提示未准备好或 WebSocket 没准备好:先让本机服务起来
javascript·网络·websocket·网络协议·pdf·html
鲲穹AI种草1 天前
办公表格批量处理:多款 Excel 工具能力客观记录
excel
开开心心就好1 天前
二维码批量生成导出工具,离线可用完全免费
java·前端·人工智能·智能手机·github·excel·visual studio
qq_369173631 天前
一句话将 Word、PPT、PDF 发布成链接
人工智能·pdf·word·powerpoint·效率工具·ai 办公
泡海椒1 天前
JQuick-Excel FORMAT 导出格式实战:日期、金额显示与 TRANSFORM 的边界
前端·python·excel