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表有着易学易用的优点,只是当表中数据量很大,我们又需要从其他表册中复制粘贴一些数据(比如身份证号)的时候,我们会越来越倦怠,毕竟我们不是机器,没法 ...
随机推荐
- rocketmq源码分析2-broker的消息接收
broker消息接收,假设接收的是一个普通消息(即没有事务),此处分析也只分析master上动作逻辑,不涉及ha. 1. 如何找到消息接收处理入口 可以通过broker的监听端口10911顺藤摸瓜式的 ...
- Python学习-day5 常用模块
day5主要是各种常用模块的学习 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 conf ...
- 正则表达式 去除所有非ASCII字符
需求: 去除字符串中包含的所有外国字符 只能使用正则如下,找到包含非ASCII的记录 db=# select * from test where info ~ '[^(\x00-\x7f)]'; id ...
- python3--类与继承和组合
类和继承:“是一个”关系 我们已经深入探索了继承的机制,这里举个例子来说明它是如何用于模拟真实世界的关系的.从程序员的角度来看,继承是由属性点号运算启动的,由此触发实例.类以及任何超类中的变最名搜索. ...
- MacPorts的安装和使用
1.安装 MacPorts的官方网站:http://www.macports.org/install.php 有dmg安装和源代码安装两种方式,下载dmg格式一步步安装即可 2.使用 更新ports ...
- 免安装版MySql安装与配置
1:在MySql官网下载免安装版 http://downloads.mysql.com/archives/community/ 下载链接 http://downloads.mysql.com/arch ...
- Java众神之路(1)-语言介绍
Java语言介绍 1.Java的历史 我个人认为,学习一种技术,不止要关注技术本身,也应该去了解一下它的发展史,这一方面是对技术本身的尊重,另一方面也是希望能够通过该技术的发展历史推测出其未来可能的发 ...
- [USACO12DEC]第一!First! (Trie树,拓扑排序)
题目链接 Solution 感觉比较巧的题啊... 考虑几点: 可以交换无数次字母表,即字母表可以为任意形态. 对于以其他字符串为前缀的字符串,我们可以直接舍去. 因为此时它所包含的前缀的字典序绝对比 ...
- mac/linux自带定时任务执行crontab的使用
1.编辑定时任务信息 sudo crontab -e #以root用户创建,也可以 -u 参数 编辑内容如下: 频率表达式分别对应为 分.时.日.周.月 LANG=zh_CN.UTF-8 */30 * ...
- 利用node搭建本地服务器调试代码
在命令符中输入 npm install -g live-server安装live-server 安装完成后在项目文件夹下打开cmd,输入live-server启动