python提取excel文本框内容

就提取excel文本框的内容,提供两种方法

一、

转成pdf,识别pdf文字

        该方法需要注意两点:

        1.似乎只能识别选中的文字(图片不行)

        2.会受到精度影响(即有可能识别出错字)

        以下是代码

        先转存为pdf格式

import win32com.client
excel = win32com.client.DispatchEx('Excel.Application')
excel.Visible = False  # 是否可视化
wb = excel.Workbooks.Open(input_path, UpdateLinks=False, ReadOnly=False)
ws = wb.Worksheets(Name)
#打印设置
ws.PageSetup.Zoom = False
ws.PageSetup.FitToPagesTall = False
ws.PageSetup.FitToPagesWide = 1
#导出为pdf
ws.ExportAsFixedFormat(0, output_path)
wb.Close(0)
excel.Quit()

        再识别pdf中的文本

with pdfplumber.open(file) as pdf:
    for ys in range(len(pdf.pages)):

        page = pdf.pages[ys]
        content = page.extract_text().split('\n')
        #接下来进行你对数据的处理

二、

直接提取单元框的内容

        该方法需要注意:

        提取的单元框顺序是乱的(我还没看懂)

import xlwings as xw  
path=r"C:\Users\dds\Desktop\ddd.xls"
app = xw.App(visible=True,add_book=False)
wb=app.books.open(path)

con=[]  #实例化列表存储数据
for sheet in wb.sheets:
    i=0
    con.append([''])       #跨行数据应为二维数组
    con.append([sheet.name])
    
    for shape in sheet.shapes:
        #print(shape)   #可以打印出来看格式,或者采用下面图片的方法
        if shape.name.startswith('Rectangle'): #也有文章用TextBox,实际情况实际分析
            if shape.text:
                con.append([shape.text.replace('\n',' ')])
                i+=1                
    print(sheet.name,str(i))
wb.sheets.add().name='文本'   #创建新表储存数据
sht=wb.sheets['文本']
sht.range('A1:A%d'%(len(con))).value=con
wb.save(r'C:\Users\dds\Desktop/asd.xls')
wb.close()
app.quit()

也可用这个(仅供参考) 

 

查阅的时候还见到一些其他方法如直接解析excel等,但个人不太喜欢,故没有收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值