批量处理excel到sql中

import xlrd
from pymysql import *
import re
import os,shutil
import time


#处理文件,把G:/2017年更新2018年楼盘/文件夹下打不开或者格式不结构的文件移动到G:/新建文件夹/下
def wenjianchuli():
    file_dir='G:/2017年更新2018年楼盘/'
    for root, dirs, files in os.walk(file_dir):
        # print(root)  # 当前目录路径
        # print(dirs)  # 当前路径下所有子目录
        # print(files)  # 当前路径下所有非目录子文件
        for x in files:
            path = root + x
            print(path)
            #成功打开并打印成功,说明该文件可处理
            try:
                #打开文件
                data=xlrd.open_workbook(path)
                #查询工作表
                sheets=data.sheets()

                sheet_1_by_index=data.sheet_by_index(0)

                row_values=sheet_1_by_index.row_values(1)
                # col_values=sheet_1_by_index.col_values(1)
                print(row_values)
			#否则,不能处理的文件移动到新建文件夹
            except:
                taget = 'G:/新建文件夹/'
                shutil.move(path,taget+x)
                print('移动{}成功'.format(str(x)))
                time.sleep(4)

#数据处理成功的先拿到另外的文件夹下去,免得程序中断要重头跑
def success_move(file,path):
    taget = 'G:/2017年更新2018年楼盘副/'
    fils = str(file)
    shutil.move(path, taget + fils)
    print('移动{}成功'.format(fils))
    time.sleep(4)

#处理数据
def shujuchuli():
    file_dir='G:/2017年更新2018年楼盘/'
    for root, dirs, files in os.walk(file_dir):
        # print(root)  # 当前目录路径
        # print(dirs)  # 当前路径下所有子目录
        # print(files)  # 当前路径下所有非目录子文件
        for file in files:
            path = root + file
            print(file)
            print(path)
            #打开文件
            data=xlrd.open_workbook(path)
            #查询工作表
            sheets=data.sheets()

            # 可以通过函数、索引、名称获得工作表。
            # sheet_1_by_function=data.sheets()[0]
            # sheet_1_by_index=data.sheet_by_index(0)
            sheet_1_by_index = data.sheet_by_index(0)

            # 可以通过方法获得某一列或者某一行的数值。
            row_values=sheet_1_by_index.row_values(1)
            col_values=sheet_1_by_index.col_values(1)
            # print(row_values,col_values)
            # 通过工作表的属性获得行数和列数。
            n_of_rows=sheet_1_by_index.nrows
            n_of_cols=sheet_1_by_index.ncols
            # print(n_of_rows,n_of_cols)
            conn = connect(host='127.0.0.1', port=3306, user='root', passwd='', db='shuju', charset='utf8')
            # 也可以用一个循环来遍历一次文件。
            for i in range(n_of_rows):
                masage=sheet_1_by_index.row_values(i)
                print(masage)
                for x in range(n_of_cols):
                    try:
                        #如果转整数成功,说明是数字
                        number=int(masage[x])
                        #如果数字长度等于11,有可能是电话
                        number=str(number)
                        if len(number)==11:
                            print(number)
                            print('成功')
                            cursor = conn.cursor()
                            query = cursor.execute("insert into shuju(telephone)values(%s)", (number))
                            conn.commit()
                    except:
                        print(masage[x])
                        print('失败')


            # conn.close()
            success_move(file, path)






if __name__ == '__main__':
    # wenjianchuli()
    shujuchuli()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值