Python实战 :2017国考职业表excel转数据库,再查询生成excel

最近看2017年国考的职业表,多而杂,不好过滤我想要的信息,特此把它转成Sqlite3数据库,再从数据库里把查询结果导出成excel,方便找职业。

(后附上整套代码)

环境:python2.7

     xlrd :读excel的库

   xlwt:写excel的库 两个库都可以在:https://pypi.python.org 上搜索到。

   gk.xls:国考官网上下载的职业表数据

 

一、excel转sqlite:

直接连接sql语句了,不用orm

# -*- coding: utf-8 -*- 
import sqlite3
import xlrd

data
= xlrd.open_workbook('gk.xls') con = sqlite3.connect('data.db') cursor = con.cursor() for x in range(0,4): table = data.sheets()[x] rows = table.nrows print 'rows:%s cols:%s'%(rows,table.ncols) print table.ncols for i in range(1, rows): rowData = table.row_values(i) departNo = rowData[0] departName = rowData[1] useDepart = rowData[2] jgxz = rowData[3] jgcj = rowData[4] zwsx = rowData[5] zwmc = rowData[6] zwjj = rowData[7] zwdm = rowData[8] kslb = rowData[9] bkrs = rowData[10] zy = rowData[11] xl = rowData[12] xw = rowData[13] zzmm = rowData[14] jcgznx = rowData[15] szyf = rowData[16] xbzyz = rowData[17] dxscg = rowData[18] tgjhjs = rowData[19] wxz = rowData[20] sfzms = rowData[21] msrybl = rowData[22] bz = rowData[23] zwfb = rowData[24] bmwz = rowData[25] zxdh1 = rowData[26] zxdh2 = rowData[27] zxdh3 = rowData[28] cursor.execute('insert into gk values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', (departNo,departName,useDepart,jgxz,jgcj,zwsx,zwmc,zwjj,zwdm,kslb,bkrs,zy,xl,xw,zzmm,jcgznx,szyf,xbzyz,dxscg,tgjhjs,wxz,sfzms,msrybl,bz,zwfb,bmwz,zxdh1,zxdh2,zxdh3)) con.commit() con.close()

执行完会在当前目录生成data.db,如图:

表格里4个sheet里的所有数据都被存入data.db里的gk数据表.

 

二、查询数据,生成excel:

# -*- coding: utf-8 -*-

import sqlite3
import xlwt


# connect to sqlite
con = sqlite3.connect('data.db')
cursor = con.cursor()
cursor.execute("select * from gk where useDepart like '%永州%'")

# create excel
wbk = xlwt.Workbook(encoding='utf-8', style_compression=0)
sheet = wbk.add_sheet('sheet', cell_overwrite_ok=True)

column_head = (u'部门代码',u'部门名称',u'用人司局',u'机构性质',u'机构层级',u'职位属性',u'职位名称',u'职位简介',u'职位代码',u'考试类别',u'招考人数',u'专业',u'学历',u'学位',u'政治面貌',u'基层工作最低年限',u'三支一扶大学生',u'西部志愿者',u'大学生村官',u'特岗计划教师',u'无限制',u'是否在面试阶段组织专业能力测试',u'面试人员比例',u'备注',u'职位分布',u'部门网站',u'咨询电话1',u'咨询电话2',u'咨询电话3')

for i in range(len(column_head)):
    sheet.write(0,i,column_head[i])

i = 1
while 1:
    one = cursor.fetchone()
    if not one:
        break
    for j in range(len(one)):
        sheet.write(i,j,one[j])
    i += 1

# save excel
wbk.save('out.xls')

# close sqlite connection
con.commit()
con.close()

执行完会在当前目录生成out.xls,查看里面的内容:

 

搞定了,以后有时间弄成web版的吧.

本来想把所有的包括职位表传到gitlab上的,现在是北京时间:13:58:54 不过gitlab竟然挂了!? Deploy in progress,难道是因为最近的米国被Ddos攻击么,等恢复了再上传吧

 

posted on 2016-10-23 14:04  留校察看  阅读(561)  评论(0)    收藏  举报

导航