利用xlrd实现xls文件导入数据

#coding:utf-8 

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.settings") 

'''
Django 版本大于等于1.7的时候,需要加上下面两句
import django
django.setup()
否则会抛出错误 django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
'''
import django

if django.VERSION >= (1, 7):#自动判断版本
    django.setup()

from keywork.models import DevData
import xlrd #excel读工具

data= xlrd.open_workbook('cs.xls') #打开文件
table = data.sheet_by_index(0) #获取工作表
nrows = table.nrows #行数
ncols = table.ncols #列数
colnames =  table.row_values(0)
WorkList = []
x = y = z = 0
for i in range(1,nrows):
    row = table.row_values(i) #获取每行值
    for j in range(0,ncols):
        if type(row[j]) == float: #如果值为float则转换为int,避免出现1输出为1.0的情况
            row[j] = int(row[j])
    if row: #查看行值是否为空
        if DevData.objects.filter(serv_id = row[0],user_flag=row[15]).exists():#判断该行值是否在数据库中重复
            x = x + 1 #重复值计数
        else:
            y = y + 1 #非重复计数
            WorkList.append(DevData(serv_id=row[0], serv_state_name=row[1], acc_nbr=row[2], user_name=row[3], acct_code=row[4], product_id=row[5],
                                            mkt_chnl_name=row[6], mkt_chnl_id=row[7],mkt_region_name=row[8], mkt_region_id=row[9],mkt_grid_name=row[10],
                                            sale_man=row[11],sale_outlets_cd1_name=row[12], completed_time=row[13],remove_data=row[14], user_flag=row[15],
                                            pro_flag=row[16], service_offer_id=row[17],service_offer_name=row[18], finish_time=row[19],staff_name=row[20],
                                            staff_code=row[21],org_name=row[22],prod_offer_name=row[23],day_id=row[24],
                                            )
                                    )
    else:
        z = z + 1     #空行值计数
DevData.objects.bulk_create(WorkList)
print '数据导入成功,导入'+str(x)+'条,重复'+str(y)+'条,有'+str(z)+'行为空!'

问啊APP,程序员答题神器,解决你所有的技术难题,   (上问啊APP 了解更多) http://t.cn/R4vE2d7 下载注册送5元 快去下载注册吧! 
问啊-定制化IT教育平台,牛人一对一服务,有问必答,开发编程社交头条 官方网站:www.wenaaa.com 下载问啊APP,参与官方悬赏,赚百元现金。
QQ群290551701 聚集很多互联网精英,技术总监,架构师,项目经理!开源技术研究,欢迎业内人士,大牛及新手有志于从事IT行业人员进入!
http://cxy.liuzhihengseo.com/497.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值