Python学习日记(二)

一、学习用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转换较复杂

你可能感兴趣的:(Python学习日记(二))