一、学习用Python读取Excel数据
1、转为JSON文件
def parse(file_path):
file = xlrd.open_workbook(file_path)
sheet_1 = file.sheet_by_index(0)
report_name = sheet_1.row_values(2) #获取报表名称行数据
row_num = sheet_1.nrows #获取行数
report_num = sheet_1.ncols #获取列数
for i in range(3,row_num): #循环每一行数据
row = sheet_1.row_values(i) #获取行数据
dict = {}
dict['name']= "".join(row[0].split()) #姓名
sap_id = "".join(str(row[1]).split())
dict['id'] = sap_id.split('.')[0] #编号
dict['partment'] = "".join(row[2].split()) #部门
dict['office'] = "".join(row[3].split()) #科室
for j in range(4,report_num):
if row[j] is not '': #如果行内没有数据,则对应报表名称无权限,设为0,否则为1
dict[report_name[j]] = 1
else:
dict[report_name[j]] = 0
print(dict)
def write_line(dict):
line = '{}\n'.format(json.dumps(dict))
f.write(line)
2、用Pandas读取
通过实操转JSON格式的方法后,发现该方法操作较为复杂,如有特别需要可以用一下,Pandas拥有的read_excel()
更加强大
import pandas as pd
import pymysql
import os
import xlrd
df=pd.read_excel(r'path')
df
path
是实际的Excel文件路径
用r的原因是保持字符原始值,否则可能出现编码错误 参考资料
3、批量读Excel脚本(待调试)
思考来源:只给出根目录路径,用os库的遍历算法读后缀为“xls”和“xlsx”的Excel文件
def listdir(path): #传入根目录
file_list = []
for file in os.listdir(path):
file_path = os.path.join(path, file) #获取绝对路径
if os.path.isdir(file_path): #如果还是文件夹,就继续迭代本函数
listdir(file_path)
elif os.path.splitext(file_path)[1] == '.xls' or os.path.splitext(file_path)[1] == '.xlsx':
#判断文件是否是Excel文件
file_list.append(file_path)
return file_list #返回Excel文件路径列表
4、Pandas读取的表格与MySQL数据库交互(需求待实现)
思路,用for循环拼接SQL语句,大前提为遍历功能实现
参考demo:
#导入模块
import pandas
from sqlalchemy import create_engine
#链接mysql 数据库
con = create_engine(settings.DB_CONFIG)
#读取excel 表格中数据
data = pandas.read_excel(path, encoding='gb18030')
#处理表格中数据,自定义表头(中文为excel 中列名,英文为读取后为数据设置的列索引)
data.rename(columns={'条码': 'id', '名称': 'name', '库存量': 'count', '进货价': 'sprice', '销售价': 'price'}, inplace=True)
#取出指定列的数据
ret=data[['id','name','price','sprice']]
#将数据写入mysql 数据库
et.to_sql(tablename, con=con, if_exists='replace',index=False)
分析总结& TODO LIST
1、df=pd.read_excel()的时候,设置工作表名记得分隔的“,”
2、Python主函数中调用需要输入参数,一般有主函数就在主函数输参
//TODO
1、将Pandas的数据遍历存入MySQL,阅读Pandas参数手册,SQLAIchemy教程
2、研究解决编写批量读取脚本时TypeError: 'str' object is not callable
报错问题,定位代码17行的str调用
3、研究实现Python前端输入功能,Sheet名尝试用通配符+用户输入值实现
4、研究学习Python打包技术,看怎么导出.exe
5、项目界面尽快补齐完善,结合新的界面需求
参考资料:
pandas 读取 excel 表格数据 插入mysql 数据库
Pandas读取csv表格数据 && 存入数据库→实习生写的,较为简单
用python读取Excel数据,并插入到MySQL数据库 →JSON转换较复杂