首页 > 编程语言 >基于Python的批量处理execl文件内容

基于Python的批量处理execl文件内容

时间:2022-11-10 01:44:14浏览次数:58  
标签:execl 批量 Python activeSheet value column file col row

今天遇到一个棘手的问题,在三个文件夹中将近60个execl表选出所需的特定三列数据,且表名,sheet名,表中的数据类型均不一致,故想到利用Python批量化处理技术手段进行处理。其原理是先读取每个表头,通过填充使其一致,然后将三个文件夹内的execl全部集中到一个文件内,然后通过读取所需的三列数据进行提取,并且在按序读取的过程中,一旦表头为空即该表停止读取。然后将读取出来的数据存储到新的表中。

import openpyxl
import os


#打印表头
def printSheetTitle(row):
  a = ''
  b = 0
  for col in row:
    if col.value:
      a = a + col.value + ','
      b += 1
    else: 
      break
  # print("{0},{2},{1}".format(file, a, b))
  return

#获取有用的列号
def findColNo(row):
  classColNo = ''
  nameColNo = ''
  idColNo = ''
  for col in row:
    if col.value == None:
      break
    if col.value.find("姓") > -1 :
      nameColNo = col.column
    elif col.value.find("班级") > -1:
      classColNo = col.column
    elif col.value.find("身份") > -1:
      idColNo = col.column
  # print("{0},{1},{2}, {3}".format(file, nameColNo, classColNo, idColNo))
  return nameColNo, classColNo, idColNo

def printExcel(basePath, file, summarySheet):
  wb = openpyxl.load_workbook(basePath+'\\'+file, read_only=False)
  activeSheet = wb.active
  # print("{0}是:{1}*{2}的表格".format(activeSheet['A1'].value ,activeSheet.max_row-2, activeSheet.max_column))
  tRows = activeSheet[2]
  #打印表头
  printSheetTitle(tRows)
  #获取有用的列号
  nameColNo, classColNo, idColNo = findColNo(tRows)
  res = []
  for num in range(3, 1000):
    # print(activeSheet["C"+str(num)].value)
    if activeSheet["A"+str(num)].value == None:
      break
    data = [activeSheet.cell(row=num, column=nameColNo).value, 
            activeSheet.cell(row=num, column=classColNo).value, 
            activeSheet.cell(row=num, column=idColNo).value]
    print(data)
    summarySheet.append(data)

basePath = r"C:\xxx\xxx\xxx\xxx\xxx"
files = os.listdir(basePath)
summaryWork = openpyxl.load_workbook(basePath+'\\all.xlsx', read_only=False)
summarySheet = summaryWork.active
for file in files:
  # print(file)
  printExcel(basePath, file, summarySheet)
summaryWork.save('all.xlsx')

  该个技术有一个软肋,即openxl无非支持读取xls的文本文件,故需将xls的文件替换成xlsx或xlsm。

本次实验还有一个思路,通过读取execl表的方式将数据导入到mysql数据库中,然后再通过数据库技术导出所需的数据,可惜没有成功。下次有机会再继续尝试

标签:execl,批量,Python,activeSheet,value,column,file,col,row
From: https://www.cnblogs.com/PD-yin996649850/p/16875746.html

相关文章

  • python发送邮件
    python发送邮件封装#encoding=utf-8importsmtplibfromemail.mime.multipartimportMIMEMultipartfromemail.mime.textimportMIMETextclassEmailMange:......
  • Python10-实战
    实战01(根据当前时间创建文件)importtimedefcreate():globalnamelocalTime=time.strftime("%Y%m%d%H%M%S",time.localtime())name=localTime+'.txt'......
  • Python10-eg
    实例01(创建并打开记录蚂蚁庄园的文件)1print("\n","="*10,"蚂蚁庄园动态","="*10)2file=open('message.tex','w')3print("\n即将显示...........\n")实例02(向......
  • Python 变量类型
    变量类型1.变量赋值Python中变量赋值不需要类型声明。每个变量在使用前必须声明,变量赋值后该变量才会被创建。couter=100#赋值整型变量miles=1000.0#浮点型......
  • python2 递归函数
    importosimportos.pathasospimportsysimportnumpyasnpimportdatetimedefmkdirs_py2(path):#递归创建文件夹路径ifosp.exists(path):return......
  • python选课系统项目详解
    选课系统项目详解选课系统简介及分析选课系统架构设计分析选课系统目录设计管理员视图注册登录创建学校创建课程创建讲师学生视图教师视图选课系统简介及......
  • 【pyfaidx】纯Python实现的FASTA随机索引库
    前言基因组序列的提取,有不少强大的工具像samtools,bedtools,之前也提到pybedtools提取序列。不过pybedtools是对bedtools提供一个Python接口,除了安装pybedtools外,还需......
  • 新的学习历程-python1 Hello World
    1print('helloworld!')2if2>0:3print('ok')4print('yes')56x=3;y=47print(x+y)学习资源来自:张志刚老师python百例 《例解Python:Pyth......
  • python中字符串的使用和数据转换
    #1.输入输出#sep='',步长数据之间以某个东西分割在这里是空格#end='\n'在打印后会额外的加一个数据换行print('1.输入输出')print('同学们晚上好',1,77......
  • python迭代器
    什么是迭代器迭代器是值迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续的,单纯的重复并不是迭代为什么要有迭代器寻求一种不依赖索引取值的......