表格数据提取

本贴最后更新于 1581 天前,其中的信息可能已经事过境迁
#!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2020/12/14 13:07 # @Author : cuijianzhe # @File : xlwt.py # @Software: PyCharm import openpyxl import requests import os import random name = input('请输入表格名称:') path = name + '.xlsx' wb = openpyxl.load_workbook(path) sheetnames = wb.sheetnames #获取文件中所有的sheet sheetData = wb[sheetnames[0]] #第一个sheet的内容 rows_max = sheetData.max_row #最大行数 cols_max = sheetData.max_column #最大列数 ApprovalNumber = sheetData.cell(row = 1,column = 4).value def get_case(): #获取所有表头功能 case_list = [] for cols in range(1,cols_max): #列数 cases = sheetData.cell(row=1,column=cols).value case_list.append(cases.replace('\n\n','\n')) return case_list def generate_code(char): all_char = '0123456789qazwsxedcrfvtgbyhnujmikolpQAZWSXEDCRFVTGBYHNUJIKOLP' index = len(all_char) - 1 code = '' for _ in range(int(char)): num = random.randint(0,index) code += all_char[num] res = ''.join(code) return res def get_carNum(): ''' 提取并添加站点名称 ''' # 第一个方法使用列表 cars_list = [] #存储车牌号 try: for cols in range(1,cols_max): carNum = sheetData.cell(row = 1,column = cols).value #每列的值 if carNum == '车牌号': for rows in range(2,rows_max+1): #遍历最大行数 carnumName = sheetData.cell(row = rows,column=cols).value if carnumName != "": cars_list.append(carnumName) else: cars_list.append("空车牌号在第%s行"%(rows)) except Exception as error: print('get车牌号错误', 'error:{}'.format(error)) return cars_list def get_url(case_list): url_list = [] for cols in range(1, cols_max): # 列数 datas = sheetData.cell(row=1, column=cols).value if datas == case_list: for rows in range(2,rows_max+1): images_url = sheetData.cell(row=rows, column=cols).value if images_url != "": url_list.append(images_url.replace('\n\n','\n')) else: #如果此单元格可能为空的话,添加自定义链接占位 url_list.append('https://file.cjzshilong.cn/pictures_file/guohui-e67e7b3b.png\n') else: continue return url_list def Download(url,car_name): for num in range(len(car_name)): ApprovalNumber = sheetData.cell(row=num+2, column=1).value # 订单编号 name = car_name[num] #车牌目录 name_dir = car_name[num] + '_' + ApprovalNumber #同车牌 不同订单 创建目录 list_files = os.listdir('./') if name not in list_files: os.mkdir(name) os.chdir(name) os.mkdir(name_dir) os.chdir(name_dir) file_list = url[num].split('\n') with open('./统计' + name_dir + '_' + generate_code(4) + '的图片url_共计' + str(len(file_list)) + '条.txt', 'w', encoding='utf-8') as f: f.write(url[num]) for url_car in file_list: if url_car != '': response = requests.get(url_car) with open(name +'_'+ generate_code(15) + '.jpg', 'wb') as car: car.write(response.content) print('%s下载完毕' %name_dir) os.chdir('../../') else: namedir_list = os.listdir('./' + name) os.chdir(name) if name_dir not in namedir_list: os.mkdir(name_dir) os.chdir(name_dir) file_list = url[num].split('\n') with open('./统计' + name_dir + '_' + generate_code(4) + '的图片url_共计' + str(len(file_list)) + '条.txt', 'w', encoding='utf-8') as f: f.write(url[num]) for url_car in file_list: if url_car != '': response = requests.get(url_car) with open(name +'_'+ generate_code(15) + '.jpg', 'wb') as car: car.write(response.content) print('%s下载完毕' %name_dir) os.chdir('../../') else: os.chdir(name_dir) file_list = url[num].split('\n') with open('./统计' + name_dir + '_' + generate_code(4) + '的图片url_共计' + str(len(file_list)) + '条.txt', 'w', encoding='utf-8') as f: f.write(url[num]) for url_car in file_list: if url_car != '': response = requests.get(url_car) with open(name + '_' + generate_code(15) + '.jpg', 'wb') as car: car.write(response.content) print('%s下载完毕' % name_dir) os.chdir('../../') if __name__ == '__main__': case_list = ['车辆正面照&车辆安全检查照','司机安全照','起始用车仪盘公里数','结束用车仪盘公里数','路桥费照片','停车费照片'] car_name = get_carNum() for func in case_list: url_img = get_url(func) Download(url_img, car_name)
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    556 引用 • 675 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
cuijianzhe
6 号黑客成员, 2000-03-03 23:22:13 加入 北京

推荐标签 标签

  • sts
    2 引用 • 2 回帖 • 226 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    6 引用 • 15 回帖 • 30 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    189 引用 • 1057 回帖 • 2 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 7 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 593 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 738 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 493 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    948 引用 • 1460 回帖
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 140 回帖
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 35 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 702 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 1 关注
  • Word
    13 引用 • 40 回帖
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    22 引用 • 210 回帖
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    42 引用 • 130 回帖 • 251 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    366 引用 • 1842 回帖
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 455 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 178 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 648 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 84 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 2 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    239 引用 • 224 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 1 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    89 引用 • 1243 回帖 • 412 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3455 回帖 • 163 关注