Python 提取PDF表格数据并保存到TXT文本或Excel文件

news2025/1/25 9:25:30

目录

安装Python库

Python提取PDF表格数据并保存到文本文档

Python提取PDF表格数据并保存到Excel文档


PDF文件常用于存储和共享各种类型的文档,这些文档可能包括大量的数据表格。通过提取这些PDF表格数据,我们可以将其导入到Excel、数据库或统计软件等数据分析工具中,从而开展深入的数据分析并生成报告。与手动输入大量数据相比,采用编程方式提取表格数据能够帮助我们避免出错并节省大量时间。这篇文章将介绍如何使用Python提取PDF表格的数据,主要包括以下内容:

  • Python提取PDF表格数据并保存到TXT文本文档
  • Python提取PDF表格数据并保存到Excel文档

安装Python库

要提取PDF表格数据并保存到文本文档和Excel文档,可以使用Spire.PDF for Python和Spire.XLS for Python库。Spire.PDF for Python主要用于提取PDF表格数据,Spire.XLS for Python主要用于将提取的表格数据写入Excel文档。

你可以通过以下pip命令来安装它们:

pip install Spire.Xls
pip install Spire.Pdf

Python提取PDF表格数据并保存到文本文档

提取PDF文档中的表格数据主要包括以下三个关键步骤:

  • 检索表格

使用PdfTableExtractor.ExtractTable(pageIndex)方法从PDF页面中提取表格。这一步能够快速定位和获取PDF文档中的表格。需要注意的是,Spire.PDF for Python通过表格的边框来识别表格,因此要确保你的PDF文档中的表格是有边框的。

  • 读取数据

对于获取的每个表格,使用PdfTable.GetText(rowIndex, columnIndex)方法来读取表格单元格中的文本数据。这样可以将表格中的内容逐一提取出来。

  • 保存数据

将提取的表格数据写入到文本文件中。

代码如下:

from spire.pdf.common import *
from spire.pdf import *

# 创建PdfDocument对象
doc = PdfDocument()
# 加载PDF文件
doc.LoadFromFile("表格1.pdf")

# 创建一个用于存储表格数据的列表
builder = []

# 创建一个PdfTableExtractor对象
extractor = PdfTableExtractor(doc)

# 循环遍历页面
for pageIndex in range(doc.Pages.Count):
    # 从当前页面中提取表格
    tableList = extractor.ExtractTable(pageIndex)

    # 判断表格列表是否为空
    if tableList is not None and len(tableList) > 0:
        # 循环遍历表格
        for table in tableList:
            # 获取当前表格的行数和列数
            row = table.GetRowCount()
            column = table.GetColumnCount()

            # 循环遍历行和列
            for i in range(row):
                for j in range(column):
                    # 获取当前单元格中的文本
                    text = table.GetText(i, j)

                    # 将文本添加到列表中
                    builder.append(text + " ")
                builder.append("\n")
            builder.append("\n")

# 将列表中的内容写入到文本文件中
with open("表格.txt", "w", encoding="utf-8") as file:
    file.write("".join(builder))

Python 读取PDF表格数据并保存到TXT文本文件

Python提取PDF表格数据并保存到Excel文档

除了将提取的数据保存到文本文件外,你还可以通过Spire.XLS for Python提供的Worksheet.Range[rowIndex, columnIndex].Value属性将它们写入到Excel文档。关键步骤如下:

  • 检索表格

使用PdfTableExtractor.ExtractTable(pageIndex)方法从PDF页面中提取表格。这一步能够快速定位和获取PDF文档中的表格。需要注意的是,Spire.PDF for Python通过表格的边框来识别表格,因此要确保你的PDF文档中的表格是有边框的。

  • 读取数据

对于获取的每个表格,使用PdfTable.GetText(rowIndex, columnIndex)方法来读取表格单元格中的文本数据。这样可以将表格中的内容逐一提取出来。

  • 写入数据到Excel工作表

使用Worksheet.Range[rowIndex, columnIndex].Value属性将将提取的表格数据写入到Excel工作表中。

具体代码如下:

from spire.pdf import *
from spire.xls import *

# 创建PdfDocument对象
doc = PdfDocument()

# 加载PDF文件
doc.LoadFromFile("表格1.pdf")

# 创建Workbook对象
workbook = Workbook()
# 清除默认工作表
workbook.Worksheets.Clear()

# 创建PdfTableExtractor对象
extractor = PdfTableExtractor(doc)

sheetNumber = 1

# 循环遍历页面
for pageIndex in range(doc.Pages.Count):
    # 从当前页面提取表格
    tableList = extractor.ExtractTable(pageIndex)

    # 判断表格列表是否为空
    if tableList is not None and len(tableList) > 0:
        # 循环遍历表格
        for table in tableList:
            # 为当前表格添加一个工作表
            sheet = workbook.Worksheets.Add(f"Sheet{sheetNumber}")

            # 获取表格的行数和列数
            row = table.GetRowCount()
            column = table.GetColumnCount()

            # 循环遍历行和列
            for i in range(row):
                for j in range(column):
                    # 获取当前单元格中的文本
                    text = table.GetText(i, j)

                    # 将文本写入工作表的指定单元格
                    sheet.Range[i + 1, j + 1].Value = text

            sheetNumber += 1

# 保存到文件
workbook.SaveToFile("提取PDF表格数据到Excel.xlsx", ExcelVersion.Version2013)

Python 读取PDF表格数据并保存到Excel表格

本文介绍了如何使用Python读取PDF表格数据,并将读取的数据保存到TXT文本文件和Excel表格。除了TXT文本和Excel格式以外,你可以自行将获取的数据写入到其他格式,如CSV、Word表格等。如需了解Spire.PDF for Python和Spire.XLS for Python的更多功能,请自行查看Spire.PDF for Python文档和Spire.XLS for Python文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1681096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

一、说明 本文配置环境为VMware虚拟机(4核CPU,8 GB内存,40GB磁盘),OS为openEuler 22.03 LTS ,虚拟机要求能联网。 二、安装docker环境 2.1 安装docker相关软件包 [rootnode01 ~]# dnf -y install docker…

PCIE V3.0物理层协议学习笔记

一、说明 PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。 PCIe属于高速串行点对点双通道高…

Ubuntu 安装 eclipse 的详细过程及工程创建和编译配置

目录 一、安装环境二、下载依赖 java jdk三、下载 eclipse四、安装4.1 java 环境4.2 eclipse 安装4.3 打开 eclipse 五、配置 eclipse5.1 新建 C 工程5.2 工具链 配置5.3 头文件路径5.4 链接库5.5 编译 一、安装环境 Ubuntu 版本:22.04.3 位数:64-bit 二…

其实解决问题的方法很简单

大家好!我是编码小哥,欢迎关注,持续分享更多实用的编程经验和开发技巧,共同进步! 本例是一个动态数组的例子,实现数据的增加、删除、根据索引修改数值、获取数值。 dynamic_array.c #include "dy…

redis-stack部署概要

第一步,下载redis-stack 下载链接:Downloads - Redis 第二步,redis安装包解压缩 gzip -d redis-stack-server-7.2.0-v10.rhel8.x86_64.tar.gz tar -xvf redis-stack-server-7.2.0-v10.rhel8.x86_64.tar 第三步,编辑etc下的redis…

centos无法联网解决方案(9步完成

1.打开终端,输入 su - root 进入到管理员模式(-的前后都有空格哈) 切换后,显示的就是root... 2.. ,输入命令ip addr 2. 切换当前目录 cd /etc/sysconfig/network-scripts/ 3.输入命令,打开文件 vi /etc…

【C/C++】设计模式——工厂模式:简单工厂、工厂方法、抽象工厂

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

高通QCS6490开发(四):FV01 AI开发板系统烧录

本期主要介绍如何在FV01开发板上烧录镜像 所用硬件有&#xff1a; FV01开发板和type C线 操作步骤如下&#xff1a; 首先连接电源线开机&#xff0c;然后通过Type C线连接FV01开发板和PC&#xff0c;接线如下&#xff1a; 1&#xff09;将设备通过如下命令进入到EDL紧急下载…

C++ 计时器

文章目录 一、简介二、实现代码2.1 windows平台2.2 C标准库 三、实现效果 一、简介 有时候总是会用到一些计时的操作&#xff0c;这里也整理了一些代码&#xff0c;包括C标准库以及window自带的时间计算函数。 二、实现代码 2.1 windows平台 StopWatch.h #ifndef STOP_WATCH_H…

开源的图形化Windows软件安装升级方案:WingetUI

WingetUI&#xff1a;简化数字生活&#xff0c;WingetUI让软件管理轻松便捷- 精选真开源&#xff0c;释放新价值。 概览 WingetUI是在GitHub上开发的一个实用工具&#xff0c;专为Windows用户设计&#xff0c;旨在为常见的命令行包管理工具&#xff08;如Winget、Scoop、Pip、…

计算机毕业设计hadoop+hive+hbase学情分析 在线教育大数据 课程推荐系统 机器学习 深度学习 人工智能 大数据毕业设计 知识图谱

毕 业 设 计&#xff08;论 文&#xff09;开 题 报 告 1&#xff0e;结合毕业设计&#xff08;论文&#xff09;课题情况&#xff0c;根据所查阅的文献资料&#xff0c;每人撰写不少于1000字的文献综述&#xff1a; 一、研究背景和意义 “互联网”和大数据带来了网络教育的蓬…

API数据对接:本地缓存与日志记录的重要性

关键词&#xff1a;数据治理项目、API接口、数据中心、第三方系统、数据异常、本地缓存、日志记录、数据整合、多源异构数据、数据处理效率 阅读建议&#xff1a; 对于数据治理、API接口和系统集成领域的专业人士&#xff0c;本文深入剖析了本地缓存和日志记录在确保系统稳定性…

信息系统项目管理师0601:项目立项管理 — 考点总结(可直接理解记忆)

点击查看专栏目录 项目立项管理 — 考点总结(可直接理解记忆) 1.项目建议书(又称立项申请)是项目建设单位向上级主管部门提交项目申请时所必须的文件,是对拟建项目提出的框架性的总体设想。在项目建议书批准后,方可开展对外工作(掌握)。 2.项目建议书应该包括的核心内…

系统架构师考试(一)

瀑布模型&#xff08;SDLC&#xff09; 特点&#xff1a; 1、严格区分阶段&#xff0c;每个阶段因果关系紧密相连 2、只适合需求明确的项目 需求分析之后会产出软件需求规格说明书SRS 但是这个模型失败概率到95%&#xff0c;有以下缺陷&#xff1a; 它只适合需求明确的项目…

Spring Boot | Spring Boot 中 自定义“用户退出控制“、获取“登录用户信息“

目录: 一、SpringBoot 中 自定义 "用户授权管理" ( 总体内容介绍 ) :二、 自定义 "用户退出控制" ( 通过 "HttpSecurity类" 的 logout( )方法来实现 "自定义用户用户登录控制" ) :1.基础项目文件准备2.实现 "自定义身份认证"…

Java入门基础学习笔记25——死循环和循环嵌套

死循环&#xff1a; 可以一直执行下去的一种循环&#xff0c;如果没有干预不会停下来。 死循环的写法&#xff1a; 例&#xff1a; package cn.ensource.loop;public class EndLessLoopDemo5 {public static void main(String[] args) {// 目标&#xff1b;掌握死循环的写法w…

GitHub配置SSH协议|什么是SSH

前言 之前用云服务器和GitHub的时候&#xff0c;因为比较懒一直没有配置过ssh。随着最近项目的迫在眉睫&#xff0c;通过Vs Code链接服务器和从GitHub白嫖代码的频率的大幅增加&#xff0c;拒绝接触新事物鼠鼠我只好转求ssh。此篇文章记录了我自己创建ssh密钥、配置ssh密钥的步…

什么是网络端口?为什么会有高危端口?

一、什么是网络端口&#xff1f; 网络技术中的端口默认指的是TCP/IP协议中的服务端口&#xff0c;一共有0-65535个端口&#xff0c;比如我们最常见的端口是80端口默认访问网站的端口就是80&#xff0c;你直接在浏览器打开&#xff0c;会发现浏览器默认把80去掉&#xff0c;就是…

python批量生成防伪识别二维码

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.总结 一.前言 二维码(QR Code)是一种矩阵条码技术,它使用黑白矩形图案来表示二进制数据,这些矩形图案可以被设备扫描并解读。二维码可以被用来存储

Spring数据访问全攻略:从JdbcTemplate到声明式事务

上文讲到 —— 航向数据之海&#xff1a;Spring的JPA与Hibernate秘籍 本文目录 四. JdbcTemplate的使用定义JdbcTemplate及其在Spring中的作用展示如何使用JdbcTemplate简化数据库操作1. 配置JdbcTemplate2. 使用JdbcTemplate查询数据3. 打印查询结果 五. Spring的事务管理介绍…