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。

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM