脚本功能描述:

读取指定文件夹内的.xlsx文件,遍历提取整理信息保存到另一指定文件夹中

import openpyxl
import os
import shutil city='城市名' def get_filename(filepath,filetype):
# import os
filename = []
for root,dirs,files in os.walk(filepath):
for i in files:
if filetype in i:
filename.append(i)
return filename def savetoexcel(data, fields, sheetname, wbname,savepath):
#print("脚本文件夹内生成新excel:")
wb = openpyxl.load_workbook(r'D:/xlsx批处理/%s/%%s'%city %wbname) sheet = wb.active
sheet.title=sheetname field = 1
for field in range(1, len(fields) + 1): # 写入表头
_ = sheet.cell(row=1, column=field, value=str(fields[field - 1])) row1 = 1
col1 = 0
for row1 in range(2, len(data) + 2): # 写入数据
for col1 in range(1, len(data[row1 - 2]) + 1):
_ = sheet.cell(row=row1, column=col1, value=data[row1 - 2][col1 - 1]) wb.save(filename=wbname)
print("更改成功,新文件位置:%s" %savepath)
shutil.move(wbname, savepath) ##########读xlsx文件 def readwb(wbname,sheetname,srcpath):
wb=openpyxl.load_workbook(r"D:/xlsx批处理/%s/%%s"%city %wbname,read_only=True)
if (sheetname==""):
ws=wb.active
else:
ws=wb[sheetname]
num=0
final_final_data = []
for row in ws:
num+=1
if num==1:
continue
else:
row_info=[] for cell in row:
aa=str(cell.value)
row_info.append(aa)
data=['杭州',1,row_info[1],row_info[0],int(row_info[5]),int(row_info[3]),row_info[9],row_info[8],row_info[10],row_info[7],row_info[6],row_info[2]]
final_data=[]
count=0
for i in range(23):
if i in [3,6,7,8,10,11,13,15,17,18,21]:
final_data.append('') else:
final_data.append(data[count])
count+=1
#print(final_data)
final_final_data.append(final_data)

savetoexcel(final_final_data,['city_name','is_esf','district_name','block_name','community_name','floor','totalfloor','units_house','circle_name','build_name','property_type','housetype_desc','company_name','decorate_type','build_area','establish_time','sale_time','license_no','building_type','total_price','price','ceil_type','address','extinfo'
],"sheet1",wbname,srcpath) def main():
srcfilepath = r'D:/xlsx批处理/%s/' % city
filetype = '.xlsx'
filename = get_filename(srcfilepath, filetype)
#print(filename)
# 新建的目录路径
if os.path.exists(r"D:/xlsx批处理结果/%s" % city) == False:
desfilepath = r'D:/xlsx批处理结果/%s' % city
os.mkdir(desfilepath) # 新建目录 desfilepath = r'D:/xlsx批处理结果/%s' % city
for i in range(len(filename)):
outfilenamei = filename[i]
#print(outfilenamei)
# outfilei = open(outfilenamei,'w')
infilenamei = srcfilepath + filename[i]
print('操作处理',infilenamei) readwb(outfilenamei, '',desfilepath) # 将处理后的文件移动到新建的目录下
# shutil.move('new.xlsx', desfilepath) main()

获得文件夹内的所有某一类型文件,filetype为文件类型

 def get_filename(filepath,filetype):
# import os
filename = []
for root,dirs,files in os.walk(filepath):
for i in files:
if filetype in i:
filename.append(i)
return filename

读xlsx文件

 def readwb(wbname,sheetname,srcpath):
wb=openpyxl.load_workbook(r"D:/xlsx批处理/%s/%%s"%city %wbname,read_only=True)
if (sheetname==""):
ws=wb.active
else:
ws=wb[sheetname]
num=0
final_final_data = []
for row in ws:
num+=1
if num==1:
continue
else:
row_info=[] for cell in row:
aa=str(cell.value)
row_info.append(aa)
data=['杭州',1,row_info[1],row_info[0],int(row_info[5]),int(row_info[3]),row_info[9],row_info[8],row_info[10],row_info[7],row_info[6],row_info[2]]
final_data=[]
count=0
for i in range(23):
if i in [3,6,7,8,10,11,13,15,17,18,21]:
final_data.append('') else:
final_data.append(data[count])
count+=1
#print(final_data)
final_final_data.append(final_data)

将信息整合,调用保存文件的方法

 savetoexcel(final_final_data,['city_name','is_esf','district_name','block_name','community_name','floor','totalfloor','units_house','circle_name','build_name','property_type','housetype_desc','company_name','decorate_type','build_area','establish_time','sale_time','license_no','building_type','total_price','price','ceil_type','address','extinfo'
],"sheet1",wbname,srcpath)

保存,移动文件

 def savetoexcel(data, fields, sheetname, wbname,savepath):
#print("脚本文件夹内生成新excel:")
wb = openpyxl.load_workbook(r'D:/xlsx批处理/%s/%%s'%city %wbname) sheet = wb.active
sheet.title=sheetname field = 1
for field in range(1, len(fields) + 1): # 写入表头
_ = sheet.cell(row=1, column=field, value=str(fields[field - 1])) row1 = 1
col1 = 0
for row1 in range(2, len(data) + 2): # 写入数据
for col1 in range(1, len(data[row1 - 2]) + 1):
_ = sheet.cell(row=row1, column=col1, value=data[row1 - 2][col1 - 1]) wb.save(filename=wbname)
print("更改成功,新文件位置:%s" %savepath)
shutil.move(wbname, savepath)

openpyxl的使用记录的更多相关文章

  1. python操作Excel、openpyxl 之图表,折线图、饼图、柱状图等

    一.准备 需要模块: from openpyxl.workbook import Workbook from openpyxl.chart import Series,LineChart, Refer ...

  2. Python操作Excel 之 openpyxl

    一.基础 安装openpyxl 模块 pip install openpyxl 或者通过轮子安装 font(字体类):字号.字体颜色.下划线等 fill(填充类):颜色等 border(边框类):设置 ...

  3. 使用openpyxl模块将Excel中的数据导入数据库

    这里将不介绍openpyxl模块的详细操作. 主要就是记录一个使用openpyxl模块将Excel表格的数据导入数据库中的实例. from openpyxl import load_workbook ...

  4. 接口自动化 之 unittest+ddt+openpyxl 综合

    前面写过python 之 unittest初探 和 python 之 unittest+ddt 两篇文章.在之前的文章中,写过可以再次优化.今天写第三篇的目的,就是在原有基础上,基于 openpyxl ...

  5. Django+ openpyxl 导出文件,设置表头/内容格式

    之前使用xlrd.xlrt处理文件的导入导出,这两个主要用于excel2003格式的文件的读写,并且xlrt最多可以写入256行,大于256行会报错 找了新插件openpyxl,对它找到针对某一行设置 ...

  6. python openpyxl内存不主动释放 ——关闭Excel工作簿后内存依旧(MemoryError)

    在openpyxl对Excel读写操作过程中,发现内存没有马上释放,如果得多次读取大文件,内存爪机,后续代码就无法运行. 尝试:各种wb.save()或者with open等途径无法解决. 发现:因为 ...

  7. 2019-7-19 包、logging模块、hashlib(加密模块)、openpyxl模块、深浅拷贝

    一.包 什么是包: 它是一系列模块文件的结合体,表示形式就是一个文件夹.该文件内部通常会有一个__init__.py文件,包的本质还是一个模块,可以被调用,调包就相当于与调用__init__.py文件 ...

  8. python openpyxl模块实现excel的读取,新表创建及原数据表追加新数据

    当实际工作需要把excel表的数据读取出来,或者把一些统计数据写入excel表中时,一个设计丰富,文档便于寻找的模块就会显得特别的有吸引力,本文对openpyxl模块的一些常见用法做一些记录,方便工作 ...

  9. 用python库openpyxl操作excel,从源excel表中提取信息复制到目标excel表中

    现代生活中,我们很难不与excel表打交道,excel表有着易学易用的优点,只是当表中数据量很大,我们又需要从其他表册中复制粘贴一些数据(比如身份证号)的时候,我们会越来越倦怠,毕竟我们不是机器,没法 ...

随机推荐

  1. kafka消息的可靠性

    本文来自网易云社区 作者:田宏增 Kafka的高可靠性的保障来源于其健壮的副本(replication)策略.通过调节其副本相关参数,可以使得Kafka在性能和可靠性之间运转的游刃有余.Kafka从0 ...

  2. Codeforces Round #459 (Div. 2)

    A. Eleven time limit per test 1 second memory limit per test 256 megabytes input standard input outp ...

  3. HDU - 1705 Count the grid

    昨天吉老师讲了皮克定理 皮克定理用于计算点阵中顶点在格点上的多边形面积.对于一个顶点全部在格点上的多边形来说,它的面积计算有如下特点: 如果用a表示位于多边形内部的格点数,b表示位于多边形边界上的格点 ...

  4. 利用Solr的post工具对核心my_core执行删除操作

    <delete> <query>*:*</query> </delete> 将上面代码保存到delete_all.xml文件中,并使用Solr的post ...

  5. 我们为什么要研究docker

    一.docker整体概述 Docker会是改变世界的那只"箱子"吗? 是什么:世界领先的软件容器平台:   开发者使用docker可以解决"在我的机器上没问题" ...

  6. EF的三种模式

    1.DateBase First(数据库优先) 2.Model First(模型优先) 3.Code First(代码优先) 当然,如果把Code First模式的两种具体方式独立出来,那就是四种了. ...

  7. CentOS7下RabbitMQ服务安装配置胜多负少

    RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发.RabbitMQ据说具有良 ...

  8. iOS-Core Data基础

    Core Data基础 Core Data是一个API集合,被设计用来简化数据对象的持久存储. 在此先不普及概念,先通过一个简单的案例使用来感受一下Core Data的精妙之处. 在创建工程的时候勾选 ...

  9. python输出字典中的中文

    如果不用本文指定的方法,会有如下报错: UnicodeDecodeError: 'utf8' codec can't decode byte 0xbf in position 2: invalid s ...

  10. hdu 3992 AC自动机上的高斯消元求期望

    Crazy Typewriter Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...