EXECL 导入数据库

这是测试脚本:

可以先读取表格的内容,再通过下面的方式进行迭代

from monitor.models import *
import xlrd


data = xlrd.open_workbook('/home/mypj/ip.xls')
table = data.sheet_by_name('MPLS')

table = data.sheet_by_name('DIA')
t = table.row_values

#通过列表推导式批量将数据放到一个List中
iplist =[Ipinfo_model(
 order_id=t(i)[0],
 ipaddr=t(i)[1],
 mask=t(i)[2],
 customer=t(i)[3],
 addr=t(i)[4],
 line_no=t(i)[5],
 PE=t(i)[6],
 PE_port=t(i)[7],
 SW=t(i)[8],
 SW_port=t(i)[9],
 BW=t(i)[10],
 AS_no=t(i)[11],
 Vender=t(i)[13],
 baoxiu=t(i)[14]
 ) for i in range(1,table.nrows)]
#再通过.bulk_create一次写入数据库
Ipinfo_model.objects.bulk_create(iplist)

  

#此脚本可直接EXCEL的数据导入到Django的数据库中,并进行读取

'''
FILES
一个类字典对象,包含所有上传的文件。 FILES 的键来自 <input type="file" name="" /> 中的 name 。 FILES 的值是一个标准的Python字典, 包含以下三个键:
filename :字符串,表示上传文件的文件名。
content-type :上传文件的内容类型。
content :上传文件的原始内容。
注意 FILES 只在请求的方法是 POST ,并且提交的 <form> 包含 enctype="multipart/form-data" 时 才包含数据。否则, FILES 只是一个空的类字典对象。
判断file提交的内容是否为空的方法是:if 'file' in request.FILES:
FileField 有一个必须的参数:upload_to一个本地的文件系统路径,被附加到你的 MEDIA_ROOT 设置后面,
在settings文件中你需要定义 MEDIA_ROOT ,它就是你要保存上传文件的目录的全路径
保存到数据库中的只有文件(相对于 MEDIA_ROOT )的路径
模版中用.url得到图片
'''

#--------------views config -----------------------------------
from monitor.models import *
import xlrd

#文件导入时要用到Request.FILES类
def upload(request):
    print request.FILES
    if request.FILES:
        ExcelUpload=request.FILES['ExcelUpload']
        print ExcelUpload
        name = str(ExcelUpload)
        #print 'name1:'name1
        #name=str(time.strftime('%Y%m%d%H%M%S'))+'xls'
        print os.path
        with open(os.path.join(name), 'wb+') as destination:
            for chunk in ExcelUpload.chunks():
                destination.write(chunk)
				
		into_sql(request,name)
    return HttpResponse('its ok')


def into_sql(request,name):	
	data = xlrd.open_workbook(name)
	table = data.sheet_by_name('sheet1')
	t = table.row_values
	iplist =[Ipinfo_model(
	 order_id=t(i)[0],
	 ipaddr=t(i)[1],
	 mask=t(i)[2],
	 customer=t(i)[3],
	 addr=t(i)[4],
	 line_no=t(i)[5],
	 PE=t(i)[6],
	 PE_port=t(i)[7],
	 SW=t(i)[8],
	 SW_port=t(i)[9],
	 BW=t(i)[10],
	 AS_no=t(i)[11],
	 Vender=t(i)[13],
	 baoxiu=t(i)[14]
	 ) for i in range(1,table.nrows)]
	Ipinfo_model.objects.bulk_create(iplist)

#--------------模板配置-----------------------------------
</form>
<!--这里的Form是用于数据导入-->
<!--注意 FILES 只在请求的方法是 POST ,并且提交的 <form> 包含 enctype="multipart/form-data" 时 才包含数据。否则, FILES 只是一个空的类字典对象。-->
<form  action="/upload/" enctype="multipart/form-data" method="post"> {% csrf_token %}
<input  type="file" style="height:20px;width:211px;" name="ExcelUpload">
<input type='submit' value='导入'>
</form>

  

posted on 2017-04-19 13:13  syother  阅读(811)  评论(0编辑  收藏  举报