python导出oracle数据到excel_【python】 python 查询oracle数据生成excel

接上篇安装好了cx_Oracle.msi MySql.msi 下载安装 xlwt-0.7.5.tar.gz, 到安装目录下 命令窗口cmd下执行 python setup.py install即可

被引用的文件:

# coding: utf-8

# xlswriter.py

# http://pypi.python.org/pypi/xlwt

import xlwt

class XLSWriter(object):

"""A XLS writer that produces XLS files from unicode data.

"""

def __init__(self, file, encoding='utf-8'):

# must specify the encoding of the input data, utf-8 default.

self.file = file

self.encoding = encoding

self.wbk = xlwt.Workbook()

self.sheets = {}

def create_sheet(self, sheet_name='sheet'):

"""Create new sheet

"""

if sheet_name in self.sheets:

sheet_index = self.sheets[sheet_name]['index'] + 1

else:

sheet_index = 0

self.sheets[sheet_name] = {'header': []}

self.sheets[sheet_name]['index'] = sheet_index

self.sheets[sheet_name]['sheet'] = self.wbk.add_sheet('%s%s' % (sheet_name, sheet_index if sheet_index else ''), cell_overwrite_ok=True)

self.sheets[sheet_name]['rows'] = 0

def cell(self, s):

if isinstance(s, basestring):

if not isinstance(s, unicode):

s = s.decode(self.encoding)

elif s is None:

s = ''

else:

s = str(s)

return s

def writerow(self, row,xlsstyle, sheet_name='sheet'):

if sheet_name not in self.sheets:

# Create if does not exist

self.create_sheet(sheet_name)

if self.sheets[sheet_name]['rows'] == 0:

self.sheets[sheet_name]['header'] = row

if self.sheets[sheet_name]['rows'] >= 65534:

self.save()

# create new sheet to avoid being greater than 65535 lines

self.create_sheet(sheet_name)

if self.sheets[sheet_name]['header']:

self.writerow(self.sheets[sheet_name]['header'], sheet_name)

for ci, col in enumerate(row):

#self.sheets[sheet_name]['sheet'].col(col).width=0x0d00

self.sheets[sheet_name]['sheet'].write(self.sheets[sheet_name]['rows'], ci, self.cell(col) if type(col) != xlwt.ExcelFormula.Formula else col,xlsstyle)

self.sheets[sheet_name]['rows'] += 1

def writerows(self, rows,style, sheet_name='sheet'):

for row in rows:

self.writerow(row,style, sheet_name)

def save(self):

self.wbk.save(self.file)

if __name__ == '__main__':

# test

xlswriter = XLSWriter(u'陕西.xls')

ft=xlwt.Font()

ft.height =0x00C8

ft.bold = True

ft1=xlwt.Font()

ft1.bold=False

style0=xlwt.XFStyle()

style0.font=ft

style1=xlwt.XFStyle()

style1.font=ft1

xlswriter.writerow(['姓名', '年龄', '电话', 'QQ'], style0,sheet_name=u'基本信息')

xlswriter.writerow(['张三', '30', '13512345678', '123456789'],style1, sheet_name=u'基本信息')

xlswriter.writerow(['学校', '获得学位', '取得学位时间'], style0,sheet_name=u'学习经历')

xlswriter.writerow(['西安电子科技大学', '学士', '2009'],style1, sheet_name=u'学习经历')

xlswriter.writerow(['西安电子科技大学', '硕士', '2012'], style1,sheet_name=u'学习经历')

xlswriter.writerow(['王五', '30', '13512345678', '123456789'],style1, sheet_name=u'基本信息')

# don't forget to save data to disk

xlswriter.save()

print 'finished.'

连接oracle并生成excel

#! /usr/bin/env python

#coding=utf-8

import xlwt,cx_Oracle,datetime,MySQLdb

from XLSWriter import XLSWriter

__s_date = datetime.date(1899, 12, 31).toordinal()-1

'''

Excel中的日期为浮点数则转为标准日期格式

'''

def getdate(date):

if isinstance(date, float):

date = int(date)

d = datetime.date.fromordinal(__s_date + date)

return d.strftime("%Y%m%d")

def getYesterday():

'''

昨天

'''

today=datetime.date.today()

oneday=datetime.timedelta(days=1)

yesterday=today-oneday

return yesterday

print getYesterday().strftime("%Y-%m-%d")

'''

获取GIPAP、TIPAP新批再批患者名单

'''

def getGipapTipapNewReactivePass (sql):

try:

db=cx_Oracle.connect("user","pwd",'192.168.1.1:1521/orcl')

cursor=db.cursor()

SQLTEXT=sql

rslist=[]

rs=cursor.execute(SQLTEXT)

rslist=rs.fetchall()

except MySQLdb.Error,e:

print "Mysql Error %d: %s" % (e.args[0], e.args[1])

cursor.close()

db.close()

return rslist

'''

将查询结果集写入xls文件

'''

def writeDateToXls(xlaname,style,paptype,papname):

gsql=u"select t.pchinesename,t.pmobile,t.pphone,t.pplanbegindate,d.dname from (select m.mrpatient,m.mrplanbegintime,m.mrplanendtime,m.mrendtime,m.mrbegintime from tb_ m "

mailtype=1

newplan=' '

#注意,这里的变量passtype passpap 即为导出后的excel前两列值 ulipad编辑器此处不能用中文,未解决 经测试 EitPlus编辑器正常 如:passtype=u'再批'

passtype='Reactive'

domain=1

passpap='gipap'

gsql+=u"where m.mrmailtype="+str(mailtype)+ str(newplan) +" and f_domain_by_pid(m.mrpatient)="+str(domain)+" and status='1' and m.mrendtime =(to_char(trunc(sysdate-1),'yyyy-mm-dd'))) a "

gsql+="left join tb_ t on t.pid=a.mrpatient "

gsql+="left join dm_ p on p.pid=t.pplan "

gsql+="left join tb_ e on e.eid=t.pcsa "

gsql+="left join tb_ j on j.jemployee=t.pcsa "

gsql+="left join tb_ d on d.did=j.jdepartment "

gsql+="where d.dstatus='A' and j.jstatus='A' and e.estatus='A' "

print gsql

#print papname+passtype

rslist=[]

rslist=getGipapTipapNewReactivePass(gsql)

print len(rslist)

xlswriter.writerow(['批注类型','药品名称','患者姓名','手机','固话','批准时间(援助开始时间)','发药点'],style0, sheet_name=papname+passtype)

#这里设置样式

for p in rslist:

xlswriter.writerow([passtype,passpap,

'' if p[0] is None else p[0].decode('gbk').encode('utf-8'),

'' if p[1] is None else p[1].decode('gbk').encode('utf-8'),

'' if p[2] is None else p[2].decode('gbk').encode('utf-8'),

'' if p[3] is None else p[3].decode('gbk').encode('utf-8'),

'' if p[4] is None else p[4].decode('gbk').encode('utf-8')],style, sheet_name=papname+passtype)

del rslist[:]

if __name__ == '__main__':

#don't forget to save data to disk

ft=xlwt.Font()

ft.height =0x00C8

ft.bold = True

ft1=xlwt.Font()

ft1.bold=False

style0=xlwt.XFStyle()

style0.font=ft

style1=xlwt.XFStyle()

style1.font=ft1

createdate=str(datetime.datetime.now().strftime('%Y%m%d' ))

xlsname=u'GIPAP_NEW_PATIENT_再批患者'+str(createdate)+'.xls'

#xlswriter=XLSWriter(xlsname)

xlswriter=XLSWriter(u'F:\\payton\\再批患者报告\\'+xlsname)

writeDateToXls(xlsname,style1,'Reactive','GIPAP')

xlswriter.save()

print 'finished.'

控制台输出:

20150326213319668

excel导出数据:

20150326213222887

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指挥控制系统中的自然智能和人工智能

来源:人机与认知实验室【编者按:为什么美军的“深绿系统”不好用?并常常被指挥员所诟病。但这是指控系统智能化的关键之所在!你也许会简单地说:“是人、机、环境系统失调造成的”,若进一步问“那是怎样失调…

Sublime Text 3 搭建 React.js 开发环境

Sublime有很强的自定义功能,插件库很庞大,针对新语言插件更新很快,配合使用可以快速搭建适配语言的开发环境。 1. babel-sublime 支持ES6, React.js, jsx代码高亮,对 JavaScript, jQuery 也有很好的扩展。关于 babel 的…

AI造假 vs AI打假 终结“猫鼠游戏”不能只靠技术

来源:和讯网人脸识别作为生物识别中的重要手段,成为了近年身份识别中最热门的领域。但与人脸识别技术共同发展的,还有借助机器学习系统、图像视频和音频内容,更改人脸、物体或环境呈现方式的深度伪造技术。随着这一技术的日趋成熟…

你好AI丨重读图灵经典之作,九条反驳意见引人深思

来源: AI科技评论编译 | 丛末、蒋宝尚当一台计算机能够骗过人类,让他们相信它就是一个人的时候,就能够被称作智能。编者按:对于艾伦图灵,相信大家都并不陌生,作为人工智能鼻祖,图灵的诸多观点即…

java 比较源文件_Beyond Compare比较Java源代码文件的操作方法

今天小编就带大家来共同学习BeyondCompare如何比较Java源代码文件希呢?望可以帮助到有需要的小伙伴哦,下面就是详细完整的操作步骤。打开BeyondCompare,在主页面左侧目录下选择文本比较会话,打开会话操作界面。分别单击比较会话界面“打开文…

关于研究的方法

转载于:https://www.cnblogs.com/freedommovie/p/6769717.html

【学术快报】韩世辉课题组在《eLife》发表论文揭示群体冲突中复仇的神经生物学机制...

来源:脑科学在群体冲突中,看到对手伤害自己的队友会激发报复行为,去攻击对手。这一复杂社会行为贯穿人类历史,阐明其机理具有重要科学意义和社会价值。心理学研究提出对“内群体的爱”(ingroup love)或/和对…

《面向对象程序设计》课程作业二

github链接作业链接编写一个程序,要求根据给定的圆的半径求圆的面积,并将求得的结果打印出来。……建立一个工程,将程序写成两个.cpp和一个.h的形式。 这个问题倒是没什么难的,但对于同学们来说是一个上手模块化的好开端。从现在开…

报告 | 超级智能城市2.0 – 人工智能引领新风尚(附下载)

来源:智慧城市决策参考未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联…

icmp协议_ICMP协议【41】

1、回顾TCP/IP协议栈为了更有效地转发IP数据报和提高交付成功的机会......2、ICMP协议的简介(1)ICMP,全称为Internet Control Message Protocol,即网际控制报文协议、网际控制消息协议。(2)它是TCP/IP协议族的一个子协议,用于在IP主机、路由器…

java的字节码无法显示_【java】查看Java字节码文件内容的方法+使用javap找不到类 解决方法...

研究synchronized底层实现,涉及到查看java字节码的需要前提是,你的PC已经成功安装了JDK并别配置了环境变量。查看方法一.javap查看简约字节码方式1.准备一个java文件例如,文件所在目录在此处Student.java文件内容如下:packagecom.…

SparkR

SparkR 支持原创:http://blog.csdn.net/dr_guo/article/details/51377784 突然有个想法,R只能处理百万级别的数据,如果R能运行在Spark上多好!搜了下发现13年SparkR这个项目就启动了,感谢美帝! 1.你肯定得先…

彻底颠覆神经科学?神经信号可能不是电信号,而是机械波?!

来源:环球科学就职于哥本哈根尼尔斯玻尔研究所的托马斯亨伯格(Thomas Heimburg),是一位研究量子力学和生物物理的物理学家。然而,他却希望推翻很多神经科学教科书上的内容。在亨伯格看来,神经元之间通过类似…

java可视化压缩_25个小众的Java库

25年前,James Gosling创建了Java,并永远地改变了编程语言的版图。与许多其他编程语言不同,Java在整个生命周期中都受到业界的高度欢迎和需求。Java具有非常优秀的Core库,提供了许多基本功能。 基于其高度流行性,因此也…

深度解读:人体防御病毒的免疫力究竟是什么?

来源:国际仿生工程学会“免疫力作为机体免除瘟疫的一种能力,已被广大民众广泛使用,特别是本次新型冠状病毒的暴发,更是使得免疫力在新闻媒体中广泛传播。对于这样一个极其抽象模糊的术语,我们需要理解其真实的含义是什…

国自然:信息科学部优先发展领域及主要研究方向(含跨科学部)

来源:科奖多媒体中心“十三五”期间,通过支持我国优势学科和交叉学科的重要前沿方向,以及从国家重大需求中凝练可望取得重大原始创新的研究方向,进一步提升我国主要学科的国际地位,提高科学技术满足国家重大需求的能力…

缓冲区不能为空。 参数名: buffer_Java Nio 之Buffer

了解历史在 java1.4之前java io ,最核心的点是在"流"上;java io 的两大基石InputStream和OutputStream 也就是大家耳熟能祥的输入流和输出流,通过这个两个基石可以实现从外界读取数据到内存,以及将内存中数据写到外界;但是输入流和…

机器人行业疫情之下的“危”与“机”

来源:腾讯网口罩脱销令口罩生产线炙手可热,医护人士紧缺令送药机器人走俏,站场监控让自动测体温机器人成为网红,武汉街头配送出现物流机器人身影……新型冠状病毒感染肺炎疫情,给机器人和智能制造行业带来了意想不到的…

mysql 二进制日志变化_MySQL运维之二进制日志

MySQL二进制日志里保存会造成或可能造成数据变化的SQL语句。通过二进制日志可以完成如实时异地容灾备份、读写分离、数据恢复等功能。下面,我们一起来看看Mysql二进制日志。开启bin-log日志Mysql默认是没有开启bin-log日志的,需要我们自己去添加配置。lo…

影响和改变世界的50件发明专利,猜下中国有几个?

来源:国家知识产权局创新创造未来,专利改变世界。最近几十年究竟有哪些专利真正改变了世界呢?国家识产权局选取了一批具有历史意义的、促进社会经济发展的、对人类社会产生重要影响的中外专利。未来智能实验室的主要工作包括:建立…