cx_oracle导出excel

使用pandas保存,这种方法相对简单点。
1.导入第三方库

import cx_Oracle
import openpyxl
import numpy as np
import pandas as pd

2.定义导出函数,在对科学计数问题的处理上和使用openpyxl不太相同,不能直接将所有列转为字符串类型,通过判断列类型为int类型再对该列转为str类型。

def export_excel(sql,fileName):
    rr = curs.execute(sql)
    rows = curs.fetchall()
    #rows = curs.fetchmany(20)

    #获取字段名
    title = [ i[0] for i in curs.description ]
    
    writer = pd.ExcelWriter(fileName)
    df = pd.DataFrame(rows,columns = title)
    
    #print(df.loc[:,'DJXH'].dtype)

    """#将int类型改为str类型,防止输出到excel变为科学计数法导致信息不完整,不能直接df = pd.DataFrame(rows,columns = title).astype(str),这样空值会在excel中保存为NaN等值。
    for t in title:
        if df.loc[:,t].dtype == 'uint64':
            df.loc[:,t] = df.loc[:,t].astype(str)"""
    #astype(str)转为str类型,空值将变为'nan'    
    df = df[df['登记序号'].isin(djxh)].astype(str)
    #将'nan'值替换为空,这样在excel中空值不保存为nan
    df = df.replace('nan', np.nan)
    

    #保存结果
    df.to_excel(writer,sheet_name = 'result',index = False)
    df_sql = pd.DataFrame([sql])
    df_sql.to_excel(writer,sheet_name = 'sql',index = False)
    writer.save()

    curs.close()

3.主代码,和使用openpyxl相同。

if __name__ == '__main__':
    conn = cx_Oracle.connect('user/password@IP/db',encoding = 'utf-8') #utf-8显示中文
    curs= conn.cursor()

    #打开sql文件获取sql语句
    with open('查询语句.sql') as sql_0:
        sql = sql_0.read()

    export_excel(sql,'book1.xlsx')

conn.close()
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值