之前零散的用过一点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的更多相关文章

  1. pyinstaller将python编写的打卡程序打包成exe

    编写了一个简易的定时提醒下班打卡程序,python代码如下: #coding:utf-8 import time import datetime from tkMessageBox import * ...

  2. python学习===将py文件从打包成exe程序

    1.进入要打包的py程序所在文件夹,例如hello.py程序要打包. 2.在同一目录下新建文件setup.py,内容如下: from distutils.core import setup impor ...

  3. 将 Python 程序打包成 .exe 文件

    1.简介 做了一个excel的风控模板,里面含有宏,我用python的第三方xlwings部署到linux后发现,linux环境并不支持xlwings. Python 程序都是脚本的方式,一般是在解析 ...

  4. Python打包成exe程序

    如何把.py文件打包成.exe可执行程序. 这里选择用PyInstaller 3.0来打包,PyInstaller 3.0下载地址:https://pypi.python.org/pypi/PyIns ...

  5. python的py文件打包成exe

    一.首先需要安装Pyinstaller-- 使用pip来安装模块 (我电脑上装的是python的一个编译环境Anaconda,如果电脑上装的是python自带的IDE的话,就直接进入python的安装 ...

  6. python打包成exe

    目前有三种方法可以实现python打包成exe,分别为 py2exe Pyinstaller cx_Freeze 其中没有一个是完美的 1.py2exe的话不支持egg类型的python库 2.Pyi ...

  7. 将Python 程序打包成 .exe格式入门

    PyInstaller PyInstaller 是一个十分有用的第三方库,可以用来打包 python 应用程序,打包完的程序就可以在没有安装 Python 解释器的机器上运行了. 它能够在 Windo ...

  8. 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片)

    解决 将Python项目打包成EXE可执行文件(单文件,多文件,包含图片) 1.当我们写了一个Python的项目时,特别是一个GUI项目,我们特备希望它能成为一个在Windows系统可执行的EXE文件 ...

  9. 关于python打包成exe的一点经验之谈

    我经常用python写些脚本什么的,有时候脚本写完以后,每次运行都得在IDE打开在运行,很麻烦,所以经常将python编译成exe.SO...有了一点经验,在这和大家分享一下.      python ...

随机推荐

  1. 连接池c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool对比测试

    这次所要做的测试是比较几种我们常用的数据库连接池的性能,他们分别是:c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool这四种,测试将采用统一的参数配置力求比较“公平”的体现统 ...

  2. 2种不同方式实现背景图里加入文字的简单CSS样式

    如果让你实现下图的样式(图片里面插入文字),你会怎么做呢? 我总结了2种方式 ①:用 img src属性直接引入图片 + 定位 ②:用背景图且不使用定位 第一种: HTML <div class ...

  3. SpringBoot + SpringCloud学习踩坑实记

     踩的坑: 1).springcloud框架中,依赖一直报错,很可能是没有添加springcloud的依赖,或者是依赖的版本号过低.并且springboot也有一个父依赖. 2.springcloud ...

  4. 面试挂了阿里却拿到网易offer,一个三年Java程序员的面试总结!

    前言 15年毕业到现在有三年多了,最近去面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中... 最终有幸去了网易. ...

  5. Redis Windows下查看版本号

    1.打开redis所在目录启动 redis-server 服务器端. 2.启动 redis-cli 客户端. 3.客户端输入:info 结果如下:

  6. 【Spark篇】---SparkStreaming算子操作transform和updateStateByKey

    一.前述 今天分享一篇SparkStreaming常用的算子transform和updateStateByKey. 可以通过transform算子,对Dstream做RDD到RDD的任意操作.其实就是 ...

  7. 【Spark篇】---Spark中内存管理和Shuffle参数调优

    一.前述 Spark内存管理 Spark执行应用程序时,Spark集群会启动Driver和Executor两种JVM进程,Driver负责创建SparkContext上下文,提交任务,task的分发等 ...

  8. Python必备库

    Python必备库 --default-timeout=100避免网络延迟错误:-U给管理员权限. Python基础库 pip --default-timeout=100 install -U pyg ...

  9. 【Discuz】关于出现“对不起,您安装的不是正版应用..”的解决方法

    使用Discuz!建站的站长都会遇到这样的问题:有些插件和风格在安装时出现不能安装的现象,出现以下提示: 不起,您安装的不是正版应用,安装程序无法继续执行 点击这里安装正版应用 针对这一情况,本人从网 ...

  10. 如何合理封装你的轮子、飞机、大炮(以封装OkHttp为例)

    前言 对于程序员来说,很多时候,我们都在造房子,从学会框架或者是学会构建整个项目之后,慢慢的我们就会觉得自己在做的事情是一种重复劳动,很多时候只不过是换个面孔而已.而更快的造房子,造好看的房子可能是进 ...