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

相关推荐
工具派4 小时前
PDF签名贴上去为什么发虚?尺寸、DPI与坐标的边界实测
java·python·pdf
DFT计算杂谈9 小时前
GSAS-II X 射线衍射(XRD)数据转换为对分布函数(PDF,Pair Distribution Function)
算法·机器学习·pdf
五花马印务9 小时前
个人技术文集 / 专著印前文件规范:PDF 导出、字体嵌入、出血与色彩管理
pdf·职称评审·个人出书
weixin_4404016911 小时前
大数据技术-数据分析(EXcel+Python数据处理+SQL)
大数据·python·数据分析·excel
jaysee-sjc1 天前
【苍穹外卖】Day12:工作台数据看板与 Excel 报表导出
java·开发语言·数据库·spring boot·spring·微信·excel
wuyk5551 天前
PyQt6-第10讲-PDF工具箱
python·microsoft·pdf·pyqt
ms365copilot1 天前
Copilot 代理开始进入Word、Excel、PowerPoint,不再只是“问一句答一句”
word·excel·copilot
wuyk5551 天前
PyQt6-第14讲-数据库与Excel双向同步
数据库·python·ui·excel·pyqt
qq_364682151 天前
AI如何将录音内容自动整理成Excel清单
人工智能·excel
Logic1011 天前
Excel信息+照片文件夹,自动合成word格式化文档
word·excel·办公自动化·邮件合并·office技巧·自动插入图片·插入域