美文网首页
Python读写Excel和PDF表格

Python读写Excel和PDF表格

作者: dpjdrniu | 来源:发表于2020-05-09 16:55 被阅读0次

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)

相关文章

网友评论

      本文标题:Python读写Excel和PDF表格

      本文链接:https://www.haomeiwen.com/subject/ctnknhtx.html