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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。