通用万能excel导入的Python实现
一.正言
从设计方案到算法和功能代码实现,花了我一周时间,在这里记录方便大家参考。废话少说,首先通过配置文件配置你想要的数据,只需要配置简单的表达式就可以实现由价值的数据分析和挖掘出有价值的信息数据。最终得到的是以字段为首的json数据。后期可以对excel或导出功能做成可视化,使用户的操作和体验更加便捷化。
二.配置文件
{
"updateTime": "2018-02-07",
"database_host": "10.10.10.6",
"database_port": 9400,
"database_name": "mdap-dev",
"filePath":"/projectName/input",
"fileName":"test.xlsx",
"$excelConfig": [
{
"sheetName":"数据录入" ,
"target_data_area":"A2~A31",
"target_data_key":"(x=A,y=1)",
"datas":[
{
"value": "(x=B,y=_y)",
"key":"指标小类"
},
{
"value": "(x=C,y=_y)",
"key":"(x=C,y=1)"
},
{
"value": "(x=D,y=_y)",
"key":"(x=D,y=1)"
},
{
"value": "(x=E,y=_y)",
"key":"(x=E,y=1)"
},
{
"value": "(x=F,y=_y)",
"key":"(x=F,y=1)"
}
]
}
]
}
三。配置文件说明
"updateTime": 更新时间设置
"database_host": "10.10.10.6", 存数据库地址
"database_port": 9400, 端口号
"database_name": "mdap-dev", 索引,名称
"filePath":"/projectName/input", 导入文件的路径
"fileName":"test.xlsx", 导入文件的名称
"$excelConfig": [ 文件具体参数配置
"sheetName":"数据录入" , 第一个sheet的表名称
"target_data_area":"A2~A31", 相对参照物字段对应取值区域
"target_data_key":"(x=A,y=1)",相对参照物字段
"datas":[ 其他字段配置
"value": "(x=B,y=_y)", 字段对应的(通过公式表示取值横纵方向的取值范围)
"key":"指标小类" 字段为"指标小类"
四.python代码
4.1 test.py
#coding=utf-8
import json
import config
import os, configparser
from importExcel import commonExcelImport
'''
测试各种样式的excel导入返回json数据条
通用模板
@author: andong
'''
#def loadSettingFile():
cp = configparser.ConfigParser()
Settings = dict(
config_file = os.path.join(os.path.dirname(__file__),'template.json'),
config = cp
)
path=r"D:\workSpace\allExcelExport\config\template.json"
with open(path, "r", encoding='UTF-8') as excelTemplate:
data = json.load(excelTemplate)
updateTime = data['updateTime']
filePath = data['filePath']
fileName = data['fileName']
excelConfig = data['$excelConfig']
counter = 1;
for i in range(len(excelConfig)):#遍历配置文件中每个sheet
print ("序号:%s 值:%s" % (i + 1, excelConfig[i]))
if __name__ == '__main__':
commonExcelImport(filePath,fileName,excelConfig[i])
# result = importExcel.ready_excel(filePath,fileName,excelConfig[i])
4.2 importExcel.py