python pdf表格识别不出来,Python读写Excel和PDF表格

python读写Excel有xlwt和xlrd库,但是:

xlwt只能写新的单元格,不能更新已写过的单元格;

xlrd只能读已有内容的单元格,未写内容的单元格读不了。

方案:用xlutils.copy库,可以实现写新的单元格,和更新新入已有内容的单元格。

rb = xlrd.open_workbook(filename)

wb = copy(rb)

ws = wb.get_sheet(sheetname)

ws.write(x,y,content)

python读PDF表格pdfplumber库好用

现有需求,读取中国现有化学品名录pdf表格,写入Excel。问题难点:

1.在原PDF中,在换页处一个单元格内容太长会在第二页另起一行,要把这种情况的两行合并成一行。

2.表头只要一行,后续页的表头行不再写入Excel。

代码:

import pdfplumber

import xlwt

import xlrd

from xlutils.copy import copy

filename='test'+'.xlsx'

sheetname='chemistry'

#先用xlwt建立个空xlsx

myWorkbook=xlwt.Workbook()

mySheet1=myWorkbook.add_sheet(sheetname)

myWorkbook.save(filename)

#再用xlrd和xlutils,进行写入,可进行单元格改写,xlwt是不行的

rb = xlrd.open_workbook(filename)

wb = copy(rb)

ws = wb.get_sheet(sheetname)

pdf = pdfplumber.open(r"C:\Users\Administrator\Desktop\名录2013年版.pdf")

table = pdf.pages[2].extract_table()

i,j=0,0

for l in table[0]:

ws.write(i,j,l)

j+=1

R=0

wb.save(filename)

for i in range(2,4058):

rb = xlrd.open_workbook(filename)

wb = copy(rb)

ws = wb.get_sheet(sheetname)

st=rb.sheet_by_name(sheetname)

page=pdf.pages[i]

table=page.extract_table()

flag=0

for r in range(R,R+len(table)-1):

if not table[1+r-R][0]:

flag=1

for c in range (len(table[0])):

ws.write(r,c,st.cell(r,c).value+table[r+1-R][c])

else:

if flag==1:

for c in range (len(table[0])):

ws.write(r,c,table[1+r-R][c])

else:

for c in range (len(table[0])):

ws.write(r+1,c,table[1+r-R][c])

R+=len(table)-1-flag

wb.save(filename)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值