Python实战 :2017国考职业表excel转数据库,再查询生成excel
2024-10-09 04:55:49
最近看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攻击么,等恢复了再上传吧
最新文章
- 【Win 10 应用开发】通过数据绑定更新进度条
- XHPROF相关内容
- svn 设置
- Github/Eclipse管理Maven项目
- TextArea限制输入长度
- 腾讯TGideas语义化标签(转)
- git简单使用教程
- Shiro 系列 - 基本知识
- egg.js异步请求数据
- tensorflow模型ckpt转pb以及其遇到的问题
- (1)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- 什么是微服务架构,.netCore微服务选型
- Python之拆分目录
- Python的命令模式和交互模式
- LOJ 10160 - 「一本通 5.2 练习 3」周年纪念晚会 / 没有上司的晚会
- 深入理解Python生成器(Generator)
- Bridge 桥接模式 MD
- TCP协议的问题
- Python笔试、面试 【必看】
- SQL server账号无法登陆
- 757. Set Intersection Size At Least Two
热门文章
- 鼠标划过用户名时在鼠标右下角显示div展示用户资料
- java中readLine()方法为什么有的行读不到?
- js,jq,css选择器
- 现有iOS项目集成React Native过程记录
- (2)WebAPI的增删改查
- 【leetcode】Compare Version Numbers
- WCF 学习篇
- SMARTY模板中如何使用get,post,request,cookies,session,server变量
- Spring MVC注解入门
- Stack Overflow: The Architecture - 2016 Edition(Translation)