提取儿童版样式:

非儿童版样式:

生成标识卡表格:

卷标:

箱标:

代码:

import openpyxl
import os
import xlrd
import datetime
from openpyxl.styles import *
#卷标根据尺码,大于1000分卷;箱标与标识卡根据款号大于5300分卷
files = []
file_path = r'\\192.168.0.198\车间打印写码\原始数据\斐乐-绿雨'  # excel所在文件夹
#设置边框{'medium' 中粗 'thin'  细  'thick'  粗  'dashed'  虚线  'dotted'  点线}
def format_border_cell(ws,row_index,col_index):ws.cell(row_index,col_index).border = Border(top = Side(border_style='thin', color='FF000000'),right = Side(border_style='thin', color='FF000000'),bottom = Side(border_style='thin', color='FF000000'),left = Side(border_style='thin', color='FF000000'))
#画边框
def draw_border(ws,row,col):for i in range(1,row+1):for j in range(1,col+1):format_border_cell(ws,i,j)
#尺寸填充数组
def size_tc(str1,num,a):if str1 == "XS":a[1] = numelif str1 == "S":a[2] =numelif str1 == "M":a[3] =numelif str1 == "L":a[4] =numelif str1 == "XL":a[5] =numelif str1 == "2XL":a[6] =numelif str1 == "3XL":a[7] =numelif str1 == "4XL":a[8] =numelif str1 == "5XL":a[9] =num
def size_tc1(str1,num,a):if str1 == "105":a[1] = numelif str1 == "110":a[2] =numelif str1 == "120":a[3] =numelif str1 == "130":a[4] =numelif str1 == "140":a[5] =numelif str1 == "150":a[6] =numelif str1 == "160":a[7] =numelif str1 == "165":a[8] =numelif str1 == "170":a[9] =numelif str1 == "175":a[10] =numelif str1 == "180":a[11] =numelif str1 == "185":a[12] =num
for dirpath, dirnames, filenames in os.walk(file_path):for file in filenames:if file.endswith('.xlsx') or file.endswith('.xls'):files.append(dirpath + '\\' + file)break
def table1(file):s1 = file.split('\\')s3 = s1[s1.__len__() - 1]s2 = s3[:s3.index(".xls")]save_path = file_path + '\\' + s2if not os.path.exists(save_path):os.mkdir(save_path)wb1 = xlrd.open_workbook(file)table = wb1.sheets()[1]row_max = table.nrows################卷标##############################WT1 = openpyxl.Workbook()WE1 = WT1.activeWE1.column_dimensions['A'].width = 15WE1.append(['款号/颜色', '尺码', '数量'])juanbiao = []for i in range(3, row_max):if table.cell(i, 0).value == "":breakb1000 = int(table.cell(i, 13).value) // 1000 + 1for j in range(0, b1000):juanbiao_xiao = []if j != b1000 - 1:juanbiao_xiao.append(table.cell(i, 0).value)juanbiao_xiao.append(table.cell(i, 11).value)juanbiao_xiao.append(1000)juanbiao.append(juanbiao_xiao)else:juanbiao_xiao.append(table.cell(i, 0).value)juanbiao_xiao.append(table.cell(i, 11).value)juanbiao_xiao.append(int(table.cell(i, 13).value) % 1000)juanbiao.append(juanbiao_xiao)for k in juanbiao:WE1.append(k)draw_border(WE1, juanbiao.__len__() + 1, 3)WT1.save(save_path + '/' + '卷标-' + s2 + '.xlsx')################箱标##############################WT2 = openpyxl.Workbook()WE2 = WT2.activename_str = ""kuanhao = ""for ch in table.cell(1, 1).value:if u'\u4e00' <= ch <= u'\u9fff':name_str += chelse:kuanhao += chWE2.append(['货号', 'XS', 'S', 'M', 'L', 'XL', '2XL', '3XL', '4XL', '5XL', '合计', '件数'])WE2.column_dimensions['A'].width = 15xiangbiao = []for i in range(3, row_max):if table.cell(i, 0).value == "":breakif xiangbiao.__len__() == 0:  # 第一次情况xiangbiao_xiao = []for j in range(13):xiangbiao_xiao.append("")xiangbiao_xiao[0] = table.cell(i, 1).valuesize_tc(table.cell(i, 11).value, int(table.cell(i, 13).value), xiangbiao_xiao)xiangbiao_xiao[12] = name_strxiangbiao_xiao[11] = 1xiangbiao.append(xiangbiao_xiao)elif table.cell(i, 1).value != xiangbiao[xiangbiao.__len__() - 1][0]:  # 当货号不相同的情况xiangbiao_xiao = []for j in range(13):xiangbiao_xiao.append("")xiangbiao_xiao[0] = table.cell(i, 1).valuesize_tc(table.cell(i, 11).value, int(table.cell(i, 13).value), xiangbiao_xiao)xiangbiao_xiao[12] = name_strxiangbiao_xiao[11] = 1xiangbiao.append(xiangbiao_xiao)else:  # 当相同货号的情况sum = 0for k in range(1, 10):if xiangbiao[xiangbiao.__len__() - 1][k] != "":sum += xiangbiao[xiangbiao.__len__() - 1][k]if int(table.cell(i, 13).value) + sum < 5300:size_tc(table.cell(i, 11).value, int(table.cell(i, 13).value), xiangbiao[xiangbiao.__len__() - 1])else:  # 当货号数量大于5300时xiangbiao_xiao = []for j in range(13):xiangbiao_xiao.append("")huohao = xiangbiao[xiangbiao.__len__() - 1][0]  # 货号jianshu = xiangbiao[xiangbiao.__len__() - 1][11] + 1  # 件数xiangbiao_xiao[11] = jianshufor m in range(xiangbiao.__len__() - 1, -1, -1):if huohao != xiangbiao[m][0]:breakxiangbiao[m][11] = jianshuxiangbiao_xiao[0] = table.cell(i, 1).valuesize_tc(table.cell(i, 11).value, int(table.cell(i, 13).value), xiangbiao_xiao)xiangbiao_xiao[12] = name_strxiangbiao.append(xiangbiao_xiao)for k in xiangbiao:sum1 = 0for j in range(1, 10):if k[j] != "":sum1 += k[j]k[10] = sum1WE2.append(k)draw_border(WE2, xiangbiao.__len__() + 1, 11)WT2.save(save_path + '/' + '箱标-' + s2 + '.xlsx')################标识卡##############################WT3 = openpyxl.Workbook()WE3 = WT3.activeWE3.append(['客户', '生产单号', '材料名称', '物料编码', '数量', '件数', '合同号', '备注', '生产日期'])biaoshika = []for temp in xiangbiao:biaoshika_xiao = []biaoshika_xiao.append(name_str)biaoshika_xiao.append(kuanhao)biaoshika_xiao.append("合格证")biaoshika_xiao.append(temp[0])biaoshika_xiao.append(temp[10])biaoshika_xiao.append(temp[11])biaoshika_xiao.append("")biaoshika_xiao.append("02")biaoshika_xiao.append("")biaoshika.append(biaoshika_xiao)for k in biaoshika:WE3.append(k)WT3.save(save_path + '/' + '标识卡-' + s2 + '.xlsx')
def table(file):s1 = file.split('\\')s3 = s1[s1.__len__() - 1]s2 = s3[:s3.index(".xls")]save_path = file_path + '\\' + s2if not os.path.exists(save_path):os.mkdir(save_path)wb1 = xlrd.open_workbook(file)table = wb1.sheets()[1]row_max = table.nrows################卷标##############################WT1 = openpyxl.Workbook()WE1 = WT1.activeWE1.column_dimensions['A'].width = 15WE1.append(['款号/颜色', '尺码', '数量'])juanbiao = []for i in range(3, row_max):if table.cell(i, 0).value == "":breakb1000 = int(table.cell(i, 15).value) // 1000 + 1 #数量for j in range(0, b1000):juanbiao_xiao = []if j != b1000 - 1:juanbiao_xiao.append(table.cell(i, 0).value)juanbiao_xiao.append(table.cell(i, 12).value) #尺寸juanbiao_xiao.append(1000)juanbiao.append(juanbiao_xiao)else:juanbiao_xiao.append(table.cell(i, 0).value)juanbiao_xiao.append(table.cell(i, 12).value)juanbiao_xiao.append(int(table.cell(i, 15).value) % 1000)juanbiao.append(juanbiao_xiao)for k in juanbiao:WE1.append(k)draw_border(WE1, juanbiao.__len__() + 1, 3)WT1.save(save_path + '/' + '卷标-' + s2 + '.xlsx')################箱标##############################WT2 = openpyxl.Workbook()WE2 = WT2.activestr5 = table.cell(1,1).value.split(' ')name_str = ""kuanhao = ""for ch in str5[0]:if u'\u4e00' <= ch <= u'\u9fff':name_str += chelse:kuanhao += chWE2.append(['货号', '105', '110', '120', '130', '140', '150', '160', '165', '170', '175', '180', '185', '合计', '件数'])WE2.column_dimensions['A'].width = 15xiangbiao = []for i in range(3, row_max):if table.cell(i, 0).value == "":breakif xiangbiao.__len__() == 0:  # 第一次情况xiangbiao_xiao = []for j in range(16):xiangbiao_xiao.append("")xiangbiao_xiao[0] = table.cell(i, 2).valuesize_tc1(table.cell(i, 12).value, int(table.cell(i, 15).value), xiangbiao_xiao)xiangbiao_xiao[15] = name_strxiangbiao_xiao[14] = 1xiangbiao.append(xiangbiao_xiao)elif table.cell(i, 2).value != xiangbiao[xiangbiao.__len__() - 1][0]:  # 当货号不相同的情况xiangbiao_xiao = []for j in range(16):xiangbiao_xiao.append("")xiangbiao_xiao[0] = table.cell(i, 2).valuesize_tc1(table.cell(i, 12).value, int(table.cell(i, 15).value), xiangbiao_xiao)xiangbiao_xiao[15] = name_strxiangbiao_xiao[14] = 1xiangbiao.append(xiangbiao_xiao)else:  # 当相同货号的情况sum = 0for k in range(1, 13):if xiangbiao[xiangbiao.__len__() - 1][k] != "":sum += xiangbiao[xiangbiao.__len__() - 1][k]if int(table.cell(i, 15).value) + sum < 5300:size_tc1(table.cell(i, 12).value, int(table.cell(i, 15).value), xiangbiao[xiangbiao.__len__() - 1])else:  # 当货号数量大于5300时xiangbiao_xiao = []for j in range(16):xiangbiao_xiao.append("")huohao = xiangbiao[xiangbiao.__len__() - 1][0]  # 货号jianshu = xiangbiao[xiangbiao.__len__() - 1][14] + 1  # 件数xiangbiao_xiao[14] = jianshufor m in range(xiangbiao.__len__() - 1, -1, -1):if huohao != xiangbiao[m][0]:breakxiangbiao[m][14] = jianshuxiangbiao_xiao[0] = table.cell(i, 2).valuesize_tc1(table.cell(i, 12).value, int(table.cell(i, 15).value), xiangbiao_xiao)xiangbiao_xiao[15] = name_strxiangbiao.append(xiangbiao_xiao)for k in xiangbiao:sum1 = 0for j in range(1, 13):if k[j] != "":sum1 += k[j]k[13] = sum1WE2.append(k)draw_border(WE2, xiangbiao.__len__() + 1, 13)WT2.save(save_path + '/' + '箱标-' + s2 + '.xlsx')################标识卡##############################WT3 = openpyxl.Workbook()WE3 = WT3.activeWE3.append(['客户', '生产单号', '材料名称', '物料编码', '数量', '件数', '合同号', '备注', '生产日期'])biaoshika = []for temp in xiangbiao:biaoshika_xiao = []biaoshika_xiao.append(name_str)biaoshika_xiao.append(kuanhao)biaoshika_xiao.append("合格证")biaoshika_xiao.append(temp[0])biaoshika_xiao.append(temp[13])biaoshika_xiao.append(temp[14])biaoshika_xiao.append("")biaoshika_xiao.append("02")biaoshika_xiao.append("")biaoshika.append(biaoshika_xiao)for k in biaoshika:WE3.append(k)WT3.save(save_path + '/' + '标识卡-' + s2 + '.xlsx')
for file in files:#table1(file)print(file)is_contain = "童" in fileif is_contain:table(file)else:table1(file)

提取不同表格数据自动生成三种表格(xlrd,openpyxl)相关推荐

  1. python将Excel数据自动生成Word报告【Pyhon-docx\openpyxl】

    我写在了知乎,图片没有搬运过来.链接:https://zhuanlan.zhihu.com/p/371767402 需求:日常工作中,需要对Excel表格的数据进行筛选计算整理,然后将数据做成Word ...

  2. Latex表格在线自动生成及word表格转Latex方法

    https://jingyan.baidu.com/article/da1091fb078691027849d6e8.html tablesgenerator: https://www.tablesg ...

  3. 腾讯云文字识别API提取表格数据并生成Excel文件

    腾讯云文字识别API提取表格数据并生成Excel文件 本文主要介绍了利用腾讯云表格文字识别API提取图片表格数据并生成Excel文件.主要涉及的知识点有:腾讯云API的调用.json文件的处理以及Ex ...

  4. 各种样式的表格数据自动统一抽取

    各种样式的表格数据自动统一抽取 程序和源代代码地址: https://github.com/Boris-2021/excel-Intelligent-extraction-merge 前言 想象一下这 ...

  5. layui表格更改一列数据_【WEB前端开辟】layui表格数据变动的一种处理方式

    表格数据更改,平常包括几个内容:新增.修正.删除.挪动,开辟中常常会面对的一个题目就是更改以后怎样将数据同步到节点上,一向以来个人的提议照样应用表格重载,不管是url情势的照样data情势的实际都是须 ...

  6. mysql double 转 字符串_没想到!在MySQL数据库中的数据有这三种类型!

    MySQL数据库是一个或多个数据列构成二维表,它的每一种数据列都有特定类型,而类型决定MySQL是怎么看待该列数据,如果把整型数值存放到字符类型的列中,MySQL则会把它当成字符串来处理. MySQL ...

  7. 计算机怎么删除表格,电脑中删除Excel2010表格多余图片的三种方法

    为了让表格看起来更加直观,很多朋友都会在Excel中插入图片.那么,当我们大批量插入图片时,如果想要删除的话,应该怎么办呢?以下是系统城小编为您带来的电脑中删除Excel2010表格多余图片的三种方法 ...

  8. 怎么把线稿提取出来_PS教程:提取线稿如此简单?三种方法总有一种适合你

    原标题:PS教程:提取线稿如此简单?三种方法总有一种适合你 部落窝教育,每天学习PS独家原创视频 在PS出现之前,如果我们喜欢某个动漫角色大概只能通过临摹的方式将人物线条勾勒出来,但PS的出现将提取线 ...

  9. Uni-app实现表格数据自动滚动(无限滚动)

    需求:实现表格数据自动(无限)滚动(排除使用删除数组第一条数据添加到最后面的方法) uniapp自带的table组件和插件市场中的插件都不能使用(因为uniapp无法操作原生DOM元素),因此,实现表 ...

最新文章

  1. 调试视频网页js脚本的方法
  2. 2019 年,19 种方法让自己成为更好的 Node.js 工程师
  3. DeeCamp 2020启动,邀请全球AI菁英共克世界变局下真实难题!
  4. php indexof的用法,c语言中indexof的用法有哪些
  5. SpringBoot-data-MongoDB 报错Please use ‘MongoMappingContext#setAutoIndexCreation(boolean)‘
  6. 毋庸置疑,容器带来改变!
  7. 运行opencv保存视频时出现错误的解决方法
  8. 推荐一款好用的截图软件Faststone capture
  9. 基于51单片机的函数信号发生器
  10. nginx使用用户真实IP做hash(解决经过CND后ip_hash失效问题)
  11. nginx集群配置流程
  12. 阿里云云计算高级工程师ACP认证(Alibaba Cloud Certified Professional - Cloud Computing)考试大纲
  13. 2144775-48-2,D-Biotin-PEG6-Thalidomide可用于cereblon(CRBN)结合和置换分析
  14. 关于《人月神话》的读后感
  15. 最新v6.0 tgroupon分销系统源码+TGROUPON卖货系统 ECSHOP+ECTOUCH内核
  16. flash as3.0 图片切换
  17. php curl发布微博,php curl利用嘀咕、搜狐微博API发布微博
  18. 我的第二本译作《精通OpenStack》上架啦:书籍介绍和译者序
  19. ROS入门21讲 | ROS机器人入门教程 【简明笔记】
  20. 操作系统笔记-----第一章 基本概述

热门文章

  1. 澳门科技大学计算机研究生就业,澳门科技大学硕士申请难度(2021年)
  2. 美食和小吃类虚拟资源教程该怎么推广引流,教大家一新招
  3. 移动设备和Sharepoint 2013 - 第四部分:位置
  4. Ps多边形套索工具,按过delete键之后,下一个点不出来,也无法取消
  5. 【敏捷2.1】精益开发与看板
  6. 打开unity虚拟轴。
  7. OpenHarmony社区运营报告(2022年12月)
  8. 最全livy代码实战
  9. cpua55和a53哪个好_ARM是要把用户绕晕?新款Cortex-A35 CPU和Cortex-A53有啥区别-控制器/处理器-与非网...
  10. namenode启动报错