代碼: 中間就遇見一個問題很讓我糾結,就是xlrd 在讀取數據時,會將 xls 單元格中所有可能是數字的數據都自動轉換成 python 的 float。這時候,我們通過 str(cell.value) 會得到 12.0 (假設 cell.value = 12.0)。 解決辦法:比如我的a=1,那麼x ...
代碼:
#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) #獲取每行值 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=int(row[0]), serv_state_name=row[1], acc_nbr=row[2], user_name=row[3], acct_code=int(row[4]), product_id=int(row[5]), mkt_chnl_name=row[6], mkt_chnl_id=int(row[7]),mkt_region_name=row[8], mkt_region_id=int(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=int(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=int(row[24]), ) ) else: z = z + 1 #空行值計數 DevData.objects.bulk_create(WorkList) print '數據導入成功,導入'+str(x)+'條,重覆'+str(y)+'條,有'+str(z)+'行為空!'
中間就遇見一個問題很讓我糾結,就是xlrd 在讀取數據時,會將 xls 單元格中所有可能是數字的數據都自動轉換成 python 的 float。這時候,我們通過 str(cell.value) 會得到 12.0 (假設 cell.value = 12.0)。
解決辦法:比如我的a=1,那麼xlrd預設輸出1.0,只需要int(a)就可以了!