脚本功能描述:

读取指定文件夹内的.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. web安全测试---跨站点脚本测试

    1.1      跨站脚本测试 1.1.1        GET方式跨站脚本测试 编号 SEC_Web_XSS_01 测试用例名称 GET方式跨站脚本测试 测试目的 由于跨站脚本会导致会话被劫持.敏感 ...

  2. Leetcode 435.无重叠区间

    无重叠区间 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 [1,2] 和 [2,3] 的边界相互"接触" ...

  3. Python IO多路复用select模块

    多路复用的分析实例:服务端.客户端 #服务端配置 from socket import * import time import select server = socket(AF_INET, SOC ...

  4. Wannafly挑战赛6

    完全平方数 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 131072K,其他语言262144K64bit IO Format: %lld 题目描述 多次查询[l,r]范围内的完全平方 ...

  5. Matlab 二值图像label regions

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/52862719 Matlab提供了现成的 ...

  6. hdu5441

    Travel Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Su ...

  7. 使用Gson解析JSON数据

    本文使用gson对json进行解析处理 首先,下载gson包 ,本文使用(gson-1.6.jar) package com.whroid.java.json; import com.google.g ...

  8. 【bzoj3513】[MUTC2013]idiots FFT

    题目描述 给定n个长度分别为a_i的木棒,问随机选择3个木棒能够拼成三角形的概率. 输入 第一行T(T<=100),表示数据组数. 接下来若干行描述T组数据,每组数据第一行是n,接下来一行有n个 ...

  9. kb-07专题--线段树-01-单点修改,区间查和

    给定区间长度,然后给两个操作,单点增加值和单点减值,询问一个区间的人数和:(水) 代码如下: /* 写的第一个线段树,丑: */ #include<iostream> #include&l ...

  10. BZOJ 3167 [Heoi2013]Sao ——树形DP

    BZOJ4824的强化版. 改变枚举的方案,使用前缀和进行DP优化. 然后复杂度就是$O(n^2)$了. #include <map> #include <cmath> #in ...