最近看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的更多相关文章

  1. python实战===2017年30个惊艳的Python开源项目 (转)

    本文转自:http://www.sohu.com/a/216723120_115128 摘要:本文来自Mybridge,介绍了过去一年里30个惊艳的Python开源项目.点击每一个都可以在GitHub ...

  2. ORACLE+PYTHON实战:复制A表数据到B表

    最近在学习python ,看到了pythod的oracle,不仅可以一次fetch多条,也可以一次insert多条,想写一个复制A表数据到B表的程序来看看实际效率能不能提高.写完发现,非常惊艳!效率提 ...

  3. python用jdbc读取oracle表和列的信息,生成java代码

    这个项目的地址 传送门 第一个python3项目,对python 还是学习中,请大佬轻喷,欢迎指点 import jaydebeapi from .database import Database d ...

  4. 从数据库导出数为生成excel表

    mysql -umaster -hxx.xx.xx.xx -p -e "set names utf8; use xxxdb;select * from t_order where t_ord ...

  5. Java使用poi从数据库读取数据生成Excel表格

    想要使用POI操作以xsl结尾的Excel,首先要下载poi相关的jar包,用到的jar有: poi-3.9.jar poi-ooxml-3.9.jar poi-ooxml-schemas-3.9.j ...

  6. [ python ] 查询数据库生成Excel并发送邮件

    开发要求: 由于管理后台导出数据非常缓慢,找程序员解决无果后,自己动手写了一个脚本,每天定时将报表发送给业务部门. 1. 通过条件查询MySQL获取数据       2. 将获取的数据写入到Excel ...

  7. ASP.NET 将Excel导入数据库

    将Excel导入数据库大致流程:  Excel数据->DataSet->数据库 需要做的准备:1.FileUpload控件一个,按钮一个,如果需要即时显示那么GridView或DataGr ...

  8. 通过Workbook类 生成Excel导出数据

    需求: 实现错误信息生成Excel保存到本地让用户查看. 刚开始使用了微软自带的Microsoft.Office.Interop.Excel类库. Microsoft.Office.Interop.E ...

  9. Echarts 数据视图 生成Excel的方法

    一.生成Excel,两大方向:1后台生成Excel 查询数据库,使用NOPI生成Excel.2前台js生成Excel三种方式1)jquery.table2excel.js --采用,优势:兼容IE和C ...

随机推荐

  1. Python之路,Day8 - Python基础 面向对象高级进阶与socket基础

    类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的 ...

  2. JOptionPane用法--java

    JOptionPane用法--java JOptionPane的简单应用: 1.首先引入包: import javax.swing.JOptionPane; 2.添加如下代码: Object[] op ...

  3. LeetCode 204 Count Primes

    Problem: Count the number of prime numbers less than a non-negative number, n. Summary: 判断小于某非负数n的质数 ...

  4. 多功能前台交互效果插件superSlide

    平时我们常用的"焦点图/幻灯片""Tab标签切换""图片滚动""无缝滚动"等效果要加载n个插件,又害怕代码冲突又怕不兼容 ...

  5. spring注解总结

      • @Controller 表示 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写,表示某类是一个控制器组件 • @Service 表示负责注册一个bea ...

  6. 【转载】mysql慢查询

    mysql> show variables like 'long%'; 注:这个long_query_time是用来定义慢于多少秒的才算“慢查询” +-----------------+---- ...

  7. sql中NVARCHAR(MAX) 性能和占空间分析 varchar(n),nvarchar(n) 长度性能及所占空间分析

    varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. varchar(n)最多能存n个字节,一个中文是两个字节. 所占空间: nvar ...

  8. Codeigniter基础

    一.去除index.php 新建.htaccess: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUES ...

  9. jsf初学selectOneMenu 绑定与取值

    jsf 的selectOneMenu 最后生成的<select>标签.这里涉及到一个binding 起初一直不知道是干嘛的,后来参考了其他文章.就相当于在asp.net 中如:<as ...

  10. VS下运行项目时,检测到在集成的托管管道模式下不适用的 ASP.NET 设置。

    vs2012调试时默认会是集成模式,vs2012调试时怎么使用传统模式哪? 这个时候只要选中启动项目按F4,在托管管道模式里选传统模式即可!