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攻击么,等恢复了再上传吧

Python实战 :2017国考职业表excel转数据库,再查询生成excel的更多相关文章
- python实战===2017年30个惊艳的Python开源项目 (转)
本文转自:http://www.sohu.com/a/216723120_115128 摘要:本文来自Mybridge,介绍了过去一年里30个惊艳的Python开源项目.点击每一个都可以在GitHub ...
- ORACLE+PYTHON实战:复制A表数据到B表
最近在学习python ,看到了pythod的oracle,不仅可以一次fetch多条,也可以一次insert多条,想写一个复制A表数据到B表的程序来看看实际效率能不能提高.写完发现,非常惊艳!效率提 ...
- python用jdbc读取oracle表和列的信息,生成java代码
这个项目的地址 传送门 第一个python3项目,对python 还是学习中,请大佬轻喷,欢迎指点 import jaydebeapi from .database import Database d ...
- 从数据库导出数为生成excel表
mysql -umaster -hxx.xx.xx.xx -p -e "set names utf8; use xxxdb;select * from t_order where t_ord ...
- Java使用poi从数据库读取数据生成Excel表格
想要使用POI操作以xsl结尾的Excel,首先要下载poi相关的jar包,用到的jar有: poi-3.9.jar poi-ooxml-3.9.jar poi-ooxml-schemas-3.9.j ...
- [ python ] 查询数据库生成Excel并发送邮件
开发要求: 由于管理后台导出数据非常缓慢,找程序员解决无果后,自己动手写了一个脚本,每天定时将报表发送给业务部门. 1. 通过条件查询MySQL获取数据 2. 将获取的数据写入到Excel ...
- ASP.NET 将Excel导入数据库
将Excel导入数据库大致流程: Excel数据->DataSet->数据库 需要做的准备:1.FileUpload控件一个,按钮一个,如果需要即时显示那么GridView或DataGr ...
- 通过Workbook类 生成Excel导出数据
需求: 实现错误信息生成Excel保存到本地让用户查看. 刚开始使用了微软自带的Microsoft.Office.Interop.Excel类库. Microsoft.Office.Interop.E ...
- Echarts 数据视图 生成Excel的方法
一.生成Excel,两大方向:1后台生成Excel 查询数据库,使用NOPI生成Excel.2前台js生成Excel三种方式1)jquery.table2excel.js --采用,优势:兼容IE和C ...
随机推荐
- 搭建Nginx+Java环境测试并且运行
一.简介: Tomcat在高并发环境下处理动态请求时性能很低,而在处理静态页面更加脆弱.虽然Tomcat的最新版本支持epoll,但是通过Nginx来处理静态页面要比通过Tomcat处理在性能方面好很 ...
- CC2540自己的配置文件
首先要指出,字段属性有notify的不能同时有read,write属性,别问哥,哥也不知道,反正我做的就不能notify,只能read,write. 分享的程序段第一字段有notify属性,第二字段r ...
- 如何利用rem在移动端不同设备上让字体自适应大小
本人也是一个刚刚接触前端的小虾米,对于移动端这一块更是一抹眼的黑,前端时间接手开始一个移动端的项目,在网上查询了一下rem的作用,百度搜索下来全是介绍rem的作用原理的(rem是根据根元素计算的),然 ...
- Arcgis与CityEngine安装破解
Arcgis与CityEngine共存,实现同时破解 作为一个GIS背景的技术人员,以前安装了无数次的Arcgis DeskTop,到了新公司后,今天主管让我学习下CityEngine,学渣的我之前没 ...
- CentOS 7 (RHEL 7)服务管理命令的变化
CentOS 7 (RHEL 7)带来了新的服务管理命令,为了保持兼容原有的命令仍可以使用,以下是新旧命令的对照. 启动.停止.重启.重载.检查服务:6: service httpd start|st ...
- IBM Z上邮件服务器的配置相关内容
https://www.ibm.com/support/knowledgecenter/SSLTBW_1.13.0/com.ibm.zos.r13.halz002/sen.htm#sen 每次搜太费劲 ...
- popupwindow的基本使用以及基本动画效果
1.创建一个popupwindow view的布局文件自己写一个就好了,这里就不说了 View view= LayoutInflater.from(context).inflate(R.layout. ...
- Datazen配置
Datazen是被微软收购的移动端全平台的数据展现解决方案.此篇主要介绍其服务器端的配置过程. 在上一篇的基础安装完成之后,在浏览器敲入如下地址进入系统的控制面板(留意安装的时候配置的是80 web端 ...
- h5 notes
HTML5 服务器发送事件(Server-Sent Events)
- oracle(sql)基础篇系列(二)——多表连接查询、子查询、视图
多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所 ...