openpyxl的使用记录
脚本功能描述:
读取指定文件夹内的.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的使用记录的更多相关文章
- python操作Excel、openpyxl 之图表,折线图、饼图、柱状图等
一.准备 需要模块: from openpyxl.workbook import Workbook from openpyxl.chart import Series,LineChart, Refer ...
- Python操作Excel 之 openpyxl
一.基础 安装openpyxl 模块 pip install openpyxl 或者通过轮子安装 font(字体类):字号.字体颜色.下划线等 fill(填充类):颜色等 border(边框类):设置 ...
- 使用openpyxl模块将Excel中的数据导入数据库
这里将不介绍openpyxl模块的详细操作. 主要就是记录一个使用openpyxl模块将Excel表格的数据导入数据库中的实例. from openpyxl import load_workbook ...
- 接口自动化 之 unittest+ddt+openpyxl 综合
前面写过python 之 unittest初探 和 python 之 unittest+ddt 两篇文章.在之前的文章中,写过可以再次优化.今天写第三篇的目的,就是在原有基础上,基于 openpyxl ...
- Django+ openpyxl 导出文件,设置表头/内容格式
之前使用xlrd.xlrt处理文件的导入导出,这两个主要用于excel2003格式的文件的读写,并且xlrt最多可以写入256行,大于256行会报错 找了新插件openpyxl,对它找到针对某一行设置 ...
- python openpyxl内存不主动释放 ——关闭Excel工作簿后内存依旧(MemoryError)
在openpyxl对Excel读写操作过程中,发现内存没有马上释放,如果得多次读取大文件,内存爪机,后续代码就无法运行. 尝试:各种wb.save()或者with open等途径无法解决. 发现:因为 ...
- 2019-7-19 包、logging模块、hashlib(加密模块)、openpyxl模块、深浅拷贝
一.包 什么是包: 它是一系列模块文件的结合体,表示形式就是一个文件夹.该文件内部通常会有一个__init__.py文件,包的本质还是一个模块,可以被调用,调包就相当于与调用__init__.py文件 ...
- python openpyxl模块实现excel的读取,新表创建及原数据表追加新数据
当实际工作需要把excel表的数据读取出来,或者把一些统计数据写入excel表中时,一个设计丰富,文档便于寻找的模块就会显得特别的有吸引力,本文对openpyxl模块的一些常见用法做一些记录,方便工作 ...
- 用python库openpyxl操作excel,从源excel表中提取信息复制到目标excel表中
现代生活中,我们很难不与excel表打交道,excel表有着易学易用的优点,只是当表中数据量很大,我们又需要从其他表册中复制粘贴一些数据(比如身份证号)的时候,我们会越来越倦怠,毕竟我们不是机器,没法 ...
随机推荐
- dict的特性和基本语法——python3.6
特性 key:value结构,字典中的每一个元素,都是键值对 key必须可被hash,且必须为不可变数据类型,必须唯一 可存放任意多个值,可修改,可以不唯一 无序 查找速度快,因为hash可以把key ...
- 微信小程序开发 -- 手机振动
wx.vibrateLong(OBJECT) wx.vibrateLong(OBJECT) 方法使手机发生较长时间的振动(400ms) OBJECT参数说明: 参数名 类型 必填 说明 success ...
- matlab 画图进阶
matlab 画图进阶 applications of matlab in engineering 图表类型的选择 first:advanced 2d plots special plots logl ...
- 【转】深入理解JVM—JVM内存模型
http://www.cnblogs.com/dingyingsi/p/3760447.html#3497199 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU ...
- 异常详细信息: System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\IUSR' 登录失败解决办法
最近在做.net项目,因为本人以前做java较多,所以对.net不熟悉,在项目完成后部署到IIS服务器上出现诸多问题,以上其中之一,若有时间,在更新其他问题的解决办法! 异常详细信息: System. ...
- Struts has detected an unhandled exception异常
近期在写struts框架的时候会时不时的出现这个异常,多次实验以后发现,目前解决的方法只能通过重新部署项目再重新启动服务器解决,通常这个异常会出现在DMI即动态方法调用过程中.
- Hibernate框架简述(转)
转自:http://www.cnblogs.com/eflylab/archive/2007/01/09/615338.html Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用 ...
- wine-qq 安装
http://www.bubuko.com/infodetail-343048.html
- Java24种设计模式的优点、缺点和适用环境总结
一.7个常用的面向对象设计原则 1.单一职责原则: 它是实现高内聚.低耦合的指导方针:一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中: 2.开闭原则: 指软件实体应尽量在不改变原有的代 ...
- Failed to apply plugin [id 'com.gradle.build-scan']
把spring源码clone下来之后,使用gradle编译不通过,异常日志如下: FAILURE: Build failed with an exception. * Where: Build fil ...