pdf对excel数据转换代码备份

一.综合测试代码

# -*- coding: utf-8 -*-

"""

Created on Wed Dec  2 15:46:02 2015

@author: Administrator

13-1-001之后的就发生读取发生错误,index=1976

index=4100发生错误

"""

import PyPDF2,os,openpyxl

from openpyxl.cell import get_column_letter,column_index_from_string

#打开Excel

#测试Excel

‘‘‘

wb_test=openpyxl.load_workbook(‘example.xlsx‘)

sheet_test=wb_test.active

for cellObj in sheet_test.columns[3]:

print(cellObj.value)

‘‘‘

#打开处理的Excel

wb=openpyxl.load_workbook(‘lijia2.xlsx‘)

sheet=wb.active

column=sheet.columns[2]

column_C_num=len(column)  #4483个处理pdf

column_C_num-=1            #去掉标题,要减一

column_index=column_index_from_string(‘J‘) #J的索引号最终是10

column_K=sheet.columns[column_index]   #要填写的K列

column_J=sheet.columns[column_index-1]

filenames_column_J=[]         #最终要填写的文件名集合

for cellObj in column_J[1:]:   #console显示不全前面内容,出现第一项不是第一个

#print(cellObj.value)

filenames_column_J.append(cellObj.value)

#Excel的J栏要处理pdf数量

column_J_num=len(filenames_column_J)   #4483个处理pdf文档

if column_C_num!=column_J_num:

raise NameError

#1.搜集所有pdf文档

pdfFiles=[]

for filename in os.listdir(‘.‘):#返回当前文件夹的所有文件:

if filename.endswith(‘.pdf‘):

pdfFiles.append(filename)

pdfFile_num=len(pdfFiles)     #文件夹pdf数量

#删除不需要的pdf文件

for filename in pdfFiles:

if filename not in filenames_column_J:

os.remove(filename)

#filename_error:Excel有的pdf文件,而路径找不到的pdf列表

filename_error=[]

for i in filenames_column_J:

if i not in pdfFiles:

filename_error.append(i)

#异常排除

if filename_error!=[] or pdfFile_num!=column_J_num:

raise NameError

‘‘‘

#当文件名由字母和数字组成时,文件路径排序会和Excel排序不一样

for i in range(column_J_num):

if pdfFiles[i]!=filenames_column_J[i]:  #审核文件名是否一致

print (‘wrongIndex:‘,i)

raise NameError

‘‘‘

#需要对Excel的K行建立一个字典,方便找到索引

#依次打开Excel对应的pdf文件名,写入cell

loop=column_J_num  #循环次数要和文件名一致,1976及其之后的pdf,Python不能识别,只能处理到这一步

for i in range(loop):

#print (‘file:‘,i)

#每100行显示print

if i%100==0:

print ‘fileindex:‘,i

filename=filenames_column_J[i]

try:

pdfFileObj=open(filename,‘rb‘)

pdfReader=PyPDF2.PdfFileReader(pdfFileObj)

pages=pdfReader.numPages #显示页数 在第4100行时读取pdfReader也会出错

except:

continue

#pageObj=pdfReader.getPage(0) #读取第一页的字符,第一页可读取

#content=pageObj.extractText() #输出第一页字符

#页面写入

content=""

for page in range(pages):

try:

pageObj=pdfReader.getPage(page) #读取第一页的字符,第一页可读取

content+=pageObj.extractText() #输出第一页字符

except:

continue

column_K[i+1].value=content        #不用转换,可直接写入excel,第二页pdf也可写入excel

pdfFileObj.close()

#行高和行宽设定

sheet.height=12

sheet.column_dimensions[‘K‘].width=20

#审核单元格里是否有空白,有多少空白

list_blank_cell=[]

for cell in column_K:

#print"cell.value:",cell.value

if cell.value==None:

list_blank_cell.append(cell)

print "list_blank_cell:",list_blank_cell

print "number of blank cell:",len(list_blank_cell)

#检测出28-3-0005.pdf对应的单元格是空白,经核实,无法打开此文档

wb.save(‘lijia2.xlsx‘)

二.单个样本测试

# -*- coding: utf-8 -*-

"""

Created on Fri Dec  4 14:05:39 2015

单文件数据转移测试

@author: Administrator

"""

import PyPDF2,os,openpyxl

from openpyxl.cell import get_column_letter,column_index_from_string

#打开处理的Excel

wb=openpyxl.load_workbook(‘example.xlsx‘)

sheet=wb.active

cell=sheet[‘K3‘]

filename="13-1-001.pdf"

pdfFileObj=open(filename,‘rb‘)

try:

pdfFileObj=open(filename,‘rb‘)

pdfReader=PyPDF2.PdfFileReader(pdfFileObj)

content=pageObj.extractText()

pageObj=pdfReader.getPage(0)

except:         #不知道什么原因出错,except后面就不要加名字

print("wrong")

print("done")

‘‘‘

content=pageObj.extractText()    #错误所在,文字无法提取,尝试换Python2版本,

#或把pdf降解到Word文档,再转换到Excel里

#print(‘content:‘,content)

cell.value=content

print("well done")

wb.save(‘example.xlsx‘)

content=""

for page in range(pages):

print (‘page:‘,page)

pageObj=pdfReader.getPage(page) #读取第一页的字符,第一页可读取

print("ok")

content+=pageObj.extractText() #输出第一页字符

print(‘ok1‘)

column_K[i+1].value=content        #不用转换,可直接写入excel,第二页pdf也可写入excel

pdfFileObj.close()

wb.save(‘example.xlsx‘)

‘‘‘

三,小样本测试

# -*- coding: utf-8 -*-

"""

Created on Wed Dec  2 15:46:02 2015

@author: Administrator

13-1-001之后的就发生读取发生错误,index=1976

小样本测试完毕,不能打开和提取文字的语句发生异常时,程序自动跳到下一行

"""

import PyPDF2,os,openpyxl

from openpyxl.cell import get_column_letter,column_index_from_string

#打开Excel

#测试Excel

‘‘‘

wb_test=openpyxl.load_workbook(‘example.xlsx‘)

sheet_test=wb_test.active

for cellObj in sheet_test.columns[3]:

print(cellObj.value)

‘‘‘

#打开处理的Excel

wb=openpyxl.load_workbook(‘example.xlsx‘)

sheet=wb.active

column=sheet.columns[2]

column_C_num=len(column)  #4483个处理pdf

column_C_num-=1            #去掉标题,要减一

column_index=column_index_from_string(‘J‘) #J的索引号最终是10

column_K=sheet.columns[column_index]   #要填写的K列

column_J=sheet.columns[column_index-1]

filenames_column_J=[]         #最终要填写的文件名集合

for cellObj in column_J[1:]:   #console显示不全前面内容,出现第一项不是第一个

#print(cellObj.value)

filenames_column_J.append(cellObj.value)

#Excel的J栏要处理pdf数量

column_J_num=len(filenames_column_J)   #4483个处理pdf文档

if column_C_num!=column_J_num:

raise NameError

#1.搜集所有pdf文档

pdfFiles=[]

for filename in os.listdir(‘.‘):#返回当前文件夹的所有文件:

if filename.endswith(‘.pdf‘):

pdfFiles.append(filename)

pdfFile_num=len(pdfFiles)     #文件夹pdf数量

#删除不需要的pdf文件

for filename in pdfFiles:

if filename not in filenames_column_J:

os.remove(filename)

#filename_error:Excel有的pdf文件,而路径找不到的pdf列表

filename_error=[]

for i in filenames_column_J:

if i not in pdfFiles:

filename_error.append(i)

#异常排除

if filename_error!=[] or pdfFile_num!=column_J_num:

raise NameError

‘‘‘

#当文件名由字母和数字组成时,文件路径排序会和Excel排序不一样

for i in range(column_J_num):

if pdfFiles[i]!=filenames_column_J[i]:  #审核文件名是否一致

print (‘wrongIndex:‘,i)

raise NameError

‘‘‘

#需要对Excel的K行建立一个字典,方便找到索引

#依次打开Excel对应的pdf文件名,写入cell

loop=column_J_num  #循环次数要和文件名一致,1976及其之后的pdf,Python不能识别,只能处理到这一步

for i in range(loop):

#print (‘file:‘,i)

#每50行显示print

if i%100==0:

print (‘fileindex:‘,i)

filename=filenames_column_J[i]

try:

pdfFileObj=open(filename,‘rb‘)

pdfReader=PyPDF2.PdfFileReader(pdfFileObj)

except:

continue

pages=pdfReader.numPages #显示页数

#pageObj=pdfReader.getPage(0) #读取第一页的字符,第一页可读取

#content=pageObj.extractText() #输出第一页字符

#页面写入

content=""

for page in range(pages):

try:

pageObj=pdfReader.getPage(page) #读取第一页的字符,第一页可读取

content+=pageObj.extractText() #输出第一页字符

except:

continue

column_K[i+1].value=content        #不用转换,可直接写入excel,第二页pdf也可写入excel

pdfFileObj.close()

wb.save(‘example.xlsx‘)

时间: 2024-11-02 23:38:27

pdf对excel数据转换代码备份的相关文章

SSH系列:(31)将FusionCharts导出为图片、PDF、Excel

本文的思路: (1)准备一个Java Web项目 (2)将FusionCharts加入到项目 (3)将FusionChart输出为图片.PDF.Excel 环境: 操作系统:Windows 8.1 企业版 开发环境:MyEclipse 2015 Stable 2.0 1.准备JavaWeb项目 FusionCharts可以接受JSON.XML类型的数据,而JSON类型的数据相对比较简单,因此我们准备的JavaWeb项目能够提供返回JSON数据的能力. 1.1.新建Web Project 添加一个

将FusionCharts导出为图片、PDF、Excel

本文转自互联网 本文的思路: (1)准备一个Java Web项目 (2)将FusionCharts加入到项目 (3)将FusionChart输出为图片.PDF.Excel 环境: 操作系统:Windows 8.1 企业版 开发环境:MyEclipse 2015 Stable 2.0 1.准备JavaWeb项目 FusionCharts可以接受JSON.XML类型的数据,而JSON类型的数据相对比较简单,因此我们准备的JavaWeb项目能够提供返回JSON数据的能力. 1.1.新建Web Proj

C#下载http/https的pdf、excel等文件(非在线打开,绕开插件)

非本服务器文件,如PDF,excel等,下载一般是通过href='远程文件的http或者https'的方式下载,但是如果浏览器已经有PDF插件了,则用href不是下载,而是在线打开了,影响体验,所以远程服务器文件下载改为后台的方式下载,可以绕开插件.代码如下: string url = hidFilePath.Value;//文件的地址:如http://emec.h.c/pdf/test.pdf string filename = hidFileName.Value;//导出的文件名称:如测试导

个人永久性免费-Excel催化剂功能第115波-word、pdf、Excel、ppt、html等文件互转

2020年第一波更新,再来个重量级的刚需场景,文件互转.有Excel催化剂后,不再需要频繁到处找寻各种网页在线版的转换操作,数据安全很重要,不要轻易将自己文件上传到网上,哪天出事了,没人可怜! 做最有价值的文件转换而非为转换而转换 文件转换的确是一个非常刚需的功能,滋生了大量的网页在线转换应用,当然也有不少是收费性质的,至于免费的也是有功能限制的如文件大小限制或转换页数限制. 因着没有过硬的数据管理能力,大量的本该在Excel上做结构化存储的数据,被分散地存储在pdf.word.甚至ppt上,这

JSONP平台对接代码备份

<script type="text/javascript">$(function(){  $.ajax({   url:"http://192.168.11.97:8025/battle_summary?player_guid=1000000",   async: false,   dataType:"jsonp",   jsonpCallback:"summary",   success:function(su

java导出数据库里的数据至Excel进行数据备份

调用部分: package com.otdrmsys.action; import com.otdrmsys.util.ResultSetToExcel; public class ExcelExport { public static void main(String[] args) { // String fileName = "otdr";//文件名,不带路径,不带.xls后缀 // String [] coloumItems = {"otdr编号",&quo

PDF/WORD/EXCEL 图片预览

一.PDF/WORD/EXCEL 转 XPS 转 第一页内容 转 图片 WORD.EXCEL转XPS (Office2010) public bool WordToXPS(string sourcePath, string targetPath) { bool result = false; Microsoft.Office.Interop.Word.WdExportFormat exportFormat = Microsoft.Office.Interop.Word.WdExportForma

[RK_2014_0911]串口代码备份,SerialPortOpen(),SerialPortRead(),SerialPortWrite()

[代码备份01] uart.c /******************************************************************************* Copyright (C), *** Tech. Co., Ltd. FileName: uart.c Author: Version : Date: 2008-1-11 Description: 串口的通用操作文件 other: Function List: History: // 历史修改记录 1.

[python]南邮OJ代码备份爬虫

之前看过Python学习的经验,说以工程为导向学习. 自己分析了一下,一般接触Python的都有一定的其他语言基础,对于程序设计的基本逻辑,语法都有一个大概的了解.而Python这种脚本语言,没有过于独特的语法,在一定的其他语言的基础上,更是可以直接上手的. 之前看Python简明教程,半天没有进度.正好遇上Python爬虫项目,直接上手,方便快捷. 网站:http://acm.njupt.edu.cn/welcome.do?method=index,正值系统更新,于是写一个备份代码的爬虫. 使