将 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 工作表。
具体操作步骤如下:
-
创建
PdfDocument类的实例。 -
使用
PdfDocument.LoadFromFile()方法加载示例 PDF 文件。 -
调用
PdfTableExtractor.ExtractTable()方法,从指定页面提取表格。 -
使用
PdfTable.GetText()方法获取表格中指定单元格的文本内容。 -
创建
Workbook对象。 -
通过
Worksheet.Range.Value属性,将从 PDF 获取的单元格数据写入工作表。 -
使用
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 天的试用许可证进行体验。