python数据处理excel和pdf,并打包成exe
之前零散的用过一点python做数据处理,这次又遇到一个数据处理的小功能,因此,记录一下整个流程,方便以后查阅。
功能要求:读取excel,找指定的PDF文件的页数是否与excel中记录的一致
整个处理过程包括python环境配置,插件安装,excel和PDF处理,exe打包
1、python环境配置
IDE用的是PyCharm社区版,pyhon环境用的是pandas,它内嵌了很多数据处理的插件,就有我们这次需要的excel处理插件。
安装其他插件,PDF处理采用PyPDF2,exe打包采用pyinstaller

2、excel和PDF处理
整个代码就不贴了,太多了也不想看,下面说一下主要代码块
1)excel读写
import pandas as pd # 读取excel文件,configPath为excel文件路径,configSheetName为excel中sheet表单名称
configTable = pd.read_excel(configPath, configSheetName)
# 读取表单中的数据,返回一个数组,数组存储每行的信息,fieldCount为表单数据列总数
configUnit = configTable.iloc[:, range(fieldCount)] configCount = len(configUnit)
for k in range(configCount):
# 读取第k行的具体列数据,loc的第二个参数是列名称
pdfNm = NameUnit.loc[k, pdfNmName]
fileNum = NameUnit.loc[k, fileNmName] # 省略若干代码... # 创建excel对象
writer = pd.ExcelWriter(excelPath + u'_结果.xlsx', engine='xlsxwriter')
NameUnit.to_excel(writer, sheet_name=configSheetName)
workbook = writer.book
worksheet = writer.sheets[configSheetName]
for k in range(configCount):
# 省略若干代码...
if pageCount != pageNum:
# 如果excel中记录值与实际值不相等
format1 = workbook.add_format({'bg_color': 'red'}) # 红色
else:
# 相等
format1 = workbook.add_format({'bg_color': 'transparent'}) # 白色
# 设置excel单元格格式
worksheet.conditional_format(color_range, {'type': 'no_blanks', 'format': format1})
worksheet.conditional_format(color_range, {'type': 'blanks', 'format': format1})
# 保存excel
writer.save()
2)PDF读取
import PyPDF2
import os # 判断文件是否存在
if os.path.exists(pdfFilePath):
# 获取PDF对象
pageObj = PyPDF2.PdfFileReader(pdfFilePath)
# 获取PDF页码总数
pageNum = pageObj.getNumPages()
3、exe打包
1)配置PyInstaller
参数-F表示打包成一个exe文件,不带-F则打包成一个文件夹,里面很多小文件,前一个运行速度慢一点,后一种运行速度快一点

2、遇到的问题
错误1:
RecursionError: maximum recursion depth exceeded
解决:在对应的spec文件前面添加最大的行数限制
import sys
sys.setrecursionlimit(5000)
错误2:
No module named 'pandas._libs.tslibs.timedeltas' in PyInstaller
在pandas安装路径下,Anaconda3\Lib\site-packages\PyInstaller\hooks新建hook-pandas.py文件,并根据报错信息添加缺少的模块,以下是我添加的所有依赖模块
hiddenimports=[
#all your previous hidden imports
'pandas', 'pandas._libs.tslibs.np_datetime', 'pandas._libs.tslibs.nattype',
'pandas._libs.skiplist'
]
点击Tools -> External Tools -> pyinstaller.exe运行spec文件,等个几分钟后就能在工程下的dist文件夹下找到打包的EXE,足足有300M。
python数据处理excel和pdf,并打包成exe的更多相关文章
- pyinstaller将python编写的打卡程序打包成exe
编写了一个简易的定时提醒下班打卡程序,python代码如下: #coding:utf-8 import time import datetime from tkMessageBox import * ...
- python学习===将py文件从打包成exe程序
1.进入要打包的py程序所在文件夹,例如hello.py程序要打包. 2.在同一目录下新建文件setup.py,内容如下: from distutils.core import setup impor ...
- 将 Python 程序打包成 .exe 文件
1.简介 做了一个excel的风控模板,里面含有宏,我用python的第三方xlwings部署到linux后发现,linux环境并不支持xlwings. Python 程序都是脚本的方式,一般是在解析 ...
- Python打包成exe程序
如何把.py文件打包成.exe可执行程序. 这里选择用PyInstaller 3.0来打包,PyInstaller 3.0下载地址:https://pypi.python.org/pypi/PyIns ...
- python的py文件打包成exe
一.首先需要安装Pyinstaller-- 使用pip来安装模块 (我电脑上装的是python的一个编译环境Anaconda,如果电脑上装的是python自带的IDE的话,就直接进入python的安装 ...
- python打包成exe
目前有三种方法可以实现python打包成exe,分别为 py2exe Pyinstaller cx_Freeze 其中没有一个是完美的 1.py2exe的话不支持egg类型的python库 2.Pyi ...
- 将Python 程序打包成 .exe格式入门
PyInstaller PyInstaller 是一个十分有用的第三方库,可以用来打包 python 应用程序,打包完的程序就可以在没有安装 Python 解释器的机器上运行了. 它能够在 Windo ...
- 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片)
解决 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片) 1.当我们写了一个Python的项目时,特别是一个GUI项目,我们特备希望它能成为一个在Windows系统可执行的EXE文件 ...
- 关于python打包成exe的一点经验之谈
我经常用python写些脚本什么的,有时候脚本写完以后,每次运行都得在IDE打开在运行,很麻烦,所以经常将python编译成exe.SO...有了一点经验,在这和大家分享一下. python ...
随机推荐
- 【盛派周三分享-2019.2.20】开放分享内容,本期主题:《SCF、DDD及相关架构思想讨论》
“周三分享”是盛派网络约定的每周三晚上定时举办的内部分享活动,活动主要由技术人员分享各方面的技术主题,并由所有参与者围绕主题进行讨论.除技术话题外,也可能涉及到相关的设计.财税.金融.政策等方面的延伸 ...
- [Swift]LeetCode623. 在二叉树中增加一行 | Add One Row to Tree
Given the root of a binary tree, then value v and depth d, you need to add a row of nodes with value ...
- [Swift]LeetCode684. 冗余连接 | Redundant Connection
In this problem, a tree is an undirected graph that is connected and has no cycles. The given input ...
- [Swift]LeetCode927. 三等分 | Three Equal Parts
Given an array A of 0s and 1s, divide the array into 3 non-empty parts such that all of these parts ...
- 1. VIM 系列 - 简单入门,拾起兴趣
目录 1. 认识模式 1.1 正常模式 1.2 插入模式 1.3 命令模式 1.4 可视模式 2. 常用快捷键 1. 认识模式 vim 一共有四种模: 1. 正常模式 2. 插入模式 3. 命令模式 ...
- 针对 Ocelot 网关的性能测试
一.背景 目前我们项目是采用的 Ocelot 作为 API 网关,并且在其基础上结合 IdentityServer4 开发了一套 API 开放平台.由于部分项目是基于 ABP 框架进行开发的,接口的平 ...
- BBS论坛(十八)
18.首页轮播图实现 (1)front/css/front_base.css .main-container{ width: 990px; margin: 0 auto; overflow: hidd ...
- H5本地存储sessionStorage和localStorage的区别
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁.因此sessionStorage不是一种持久化的本地 ...
- HBase2实战:HBase Flink和Kafka整合
1.概述 Apache官方发布HBase2已经有一段时间了,HBase2中包含了许多个Features,从官方JIRA来看,大约有4500+个ISSUES(查看地址),从版本上来看是一个非常大的版本了 ...
- 初学Java Web(2)——搭建Java Web开发环境
虽然说 html 和 css 等前端技术,是对于 Web 来说不可或缺的技术,但是毕竟更为简单一些,所以就不详细介绍了,没有基础的同学可以去菜鸟教程或者W3school进行自主学习,最好的方式还是做一 ...