需要读取excel中相对固定板式的数据内容,转化成标准表格数据进行数据处理,收集了各种处理方式,合并起来,形成了一个处理过程,分享给大家。
import xlrd
import os
import pandas as pd
#检查是否数字
def is_number(s):
try:
float(s)
return True
except ValueError:
pass
try:
import unicodedata
unicodedata.numeric(s)
return True
except (TypeError, ValueError):
pass
return False
#获取文档内容
def file_add(file):
file_path = file #'/Users/tianfch/data-analysis_new/tianfch/wangyan/SC-W7252-HOBSON.xlsx'
#读取指定excel文件
book = xlrd.open_workbook(file_path)
#获取第一个sheets页内容
sheet1 = book.sheets()[0]
##===========================减去头部行数,避免下标越界==============================##
#总行数去掉头部行数
nrows = sheet1.nrows - 19
##===========================开始读的位置==============================##
#从表格18行开始处理
num1 = 18
#初始化存放数据
ls_filedata = []
#读取表格18行后订单内容
#从0开始循环
x = 0
for x in range(x,nrows):
x += 1
#从表格21行处往后读
num = num1+x
#直到出现非数字单元格中止
if len(sheet1.cell_value(num,1)) >0 :
#将每行数据放入
ls = sheet1.cell_value(5,20),sheet1.cell_value(6,20),sheet1.cell_value(num,0),sheet1.cell_value(num,1),sheet1.cell_value(num,5),sheet1.cell_value(num,18),sheet1.cell_value(num,19),sheet1.cell_value(num,20),sheet1.cell_value(num,24),sheet1.cell_value(num,26)
ls_filedata.append(ls)
ls_df = pd.DataFrame(ls_filedata)
return ls_df
#提取文件夹下的地址+文件名,源文件设定排序规则
def file_name(file_dir):
L = []
for root, dirs, files in os.walk(file_dir):
for file in files:
#读取文件后缀xlsx
if os.path.splitext(file)[1] == '.xlsx':
L.append(os.path.join(root , file))
return L
##===========================开始处理文件==============================##
#读取指定路径下的文件
fileread_path = '/Users/tianfch/data-analysis_new/tianfch/wangyan/new/'
#处理完后保存路径下的文件
filerwriter_path = "/Users/tianfch/data-analysis_new/tianfch/wangyan的归档文件2.0.xlsx"
file_list = file_name(fileread_path)
#
file_count = len(file_list)
#初始化存放数据
file_data = []
# 表格头
ls = 'PO NO:','DATE:','PO NO','SC NO','CODE','QUANTITY','PRICE','AMOUNT','N.W','G.W'
#将表格头放入
file_data.append(ls)
file_data = pd.DataFrame(file_data)
#循环处理文件
x=0
for x in range(x,file_count):
# print(file_count)
file = file_list[x]
# print(file)
ls = file_add(file)
file_data = pd.concat([file_data,ls],axis=0)
x += 1
#保存文件到指定目录下
df = pd.DataFrame(file_data)
df.to_excel(filerwriter_path,index = False)