通过xlrd处理数据并写入

背景
手动创建标签工作量大且无意义,简单用脚本处理。

步骤
1、数据从execl获取
2、通过QuerySet API将数据写入数据库

一、读取execl数据
用第三方模块xlrd处理execl数据
execl原始数据:
通过xlrd处理数据并写入_第1张图片
python处理如下:

import xlrd


def init_Label():
    data = xlrd.open_workbook("E:\PycharmProject\myproject\Label.xlsx")
    sheet_names = data.sheet_names()
    print("所有sheet名称", sheet_names)
    sheet = data.sheet_by_index(0)
    print("通过索引获取第一个sheet页的数据,是个对象.")
    nrows = sheet.nrows  ##获取行数
    ncols = sheet.ncols  ##获取列数
    print("The Label row:\033[1;35m %d \033[0m clos:\033[1;35m %d \033[0m." % (nrows, ncols))
    row1 = sheet.row_values(3)  ##1、通过下标获取某行的数据
    row2 = sheet.row(rowx=3)  ##2、通过下标获取某行的数据
    col1 = sheet.col_values(0)  ##获取某列的数据
    print("第三行的数据为:", row1)
    print("第三行的数据为:", row2)
    print("第一列的数据为:", col1)
    row_len = sheet.row_len(3)  ##获取行的长度
    print("第三行的数据长度:", row_len)
    name = sheet.row_values(1)[0]  ##获取单元格数据
    value = sheet.col_values(1)[1]
    print("第[1][0]的数据为: %s , 第[1][1]的数据为 %s." % (name, value))


if __name__ == "__main__":
    init_Label()

输出结果:
通过xlrd处理数据并写入_第2张图片
二、调用models写入数据

"""
- Django QuerySet Api to create label

Version: 0.1
Date: 2020-03-11

"""
import os, django, sys
import xlrd


root_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')
sys.path.append(root_dir)
os.environ['DJANGO_SETTINGS_MODULE'] = 'jumpserver.settings'
django.setup()

from assets.models import Label


def init_Label():
    data = xlrd.open_workbook("/opt/jumpserver/apps/tools/Label.xlsx")
    sheet = data.sheet_by_index(0)
    nrows = sheet.nrows
    ncols = sheet.ncols
    print("The Label row:\033[1;35m %d \033[0m clos:\033[1;35m %d \033[0m." % (nrows, ncols))
    for i in range(1, nrows):
        label_name = Label.objects.filter(name=sheet.row_values(i)[0])
        if label_name:
            print("%s 标签已经存在." % sheet.row_values(i)[0])
            continue
        try:
            Label.objects.create(
                name=sheet.row_values(i)[0],
                value=sheet.row_values(i)[1]
            )
            print("%s 创建成功." % sheet.row_values(i)[0])
        except Exception as e:
            print(e)
    print("add label finish.")


if __name__ == "__main__":
    init_Label()

最终页面展示如下:
通过xlrd处理数据并写入_第3张图片
数据库表中:
通过xlrd处理数据并写入_第4张图片

你可能感兴趣的:(Python萌新)