28、python3.7(windows)将ORACLE11gR2中的数据取出写入excel表
28.1、下载python的离线扩展模块:
1、windows下python的离线扩展模块下载地址为:
https://www.lfd.uci.edu/~gohlke/pythonlibs/
提示:
可以通过python官方的pypi仓库下载linux或windows相应python版本的离线扩展模块:https://pypi.org/
2、下载连接oracle的python离线扩展模块:
3、下载操作excel表的python离线扩展模块:
28.2、安装下载的python离线扩展模块:
1、以管理员的方式运行cmd,进入windows的dos界面,并进入离线python模块所在的目录。
2、安装:
pip isntall cx_Oracle-7.3.0-cp37-cp37m-win_amd64.whl
pip isntall xlrd-1.2.0-py2.py3-none-any.whl
pip isntall xlutils-2.0.0-py2.py3-none-any.whl
pip isntall xlwt-1.3.0-py2.py3-none-any.whl
28.3、安装Oracle客户端:
1、下载oralce11gR2客户端:
下载地址为:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
(1)下载的版本如下(亲测该版本适用于oralce11gR2和oracle10g):
(2)解压该文件,我将其放在C:\Program Files (x86)\目录下。
2、添加环境变量:
3、把oracle客户端的安装文件中以".dll"结尾的文件复制到python的安装目录中:
(1)
(2)
28.4、python代码实现:
# -*- coding: utf-8 -*-
import sys
# 读取excel
import xlrd
# 写入excel
import xlwt
# 操作 Excel 文件的实用工具,如复制、分割、筛选等
from xlutils.copy import copy
# oralc模块
import cx_Oracle as oracle
# 时间模块
import datetime
# 连接数据库的url地址
oracle_url = "net/net@172.16.1.88:1521/orcl"
# 输入文件路劲,文件必须存在
file_in_path = "lc.xls"
# 输出文件路径,自动创建文件,如果文件已存在则自动覆盖
file_out_path = "chang.xls"
# excel的sheet表名
sheet_name = "Sheet1"
# 输出显示内容
class Logger(object):
def __init__(self, filename='default.log', stream=sys.stdout):
self.terminal = stream
# 如果没有就新生成一个文件,存在就覆盖
self.log = open(filename, 'w', encoding="utf-8")
def write(self, message):
self.terminal.write(message)
self.log.write(message)
def flush(self):
pass
# 获取当前时间
now_time = datetime.datetime.now().strftime('%Y-%m-%d')
# 将正常日志和错误日志分别写入到两个文件中
sys.stdout = Logger(now_time + '-normal.log', sys.stdout)
sys.stderr = Logger(now_time + '-error.log', sys.stderr)
try:
# 数据库连接
db = oracle.connect(oracle_url)
# 创建cursor
cursor = db.cursor()
# 打开已存在的表
oldWb = xlrd.open_workbook(file_in_path, formatting_info=True)
# 复制
newWb = copy(oldWb)
# 取sheet表
newWs = newWb.get_sheet(sheet_name)
# 执行sql语句
def exec_sql(sql):
return cursor.execute(sql).fetchall()
# 在excel表中插入数据
def insert_excel(row, col, value):
# 写入数据
newWs.write(row, col, value)
# sql语句
sql = "select * from bhl_user"
# 从数据库中取出的数据
value = exec_sql(sql)[0][1]
# 将取出的数据插入到excel表中第几行第几列,表格的坐标是从0开始计算的
insert_excel(2, 4, value)
print("insert into data success!")
except Exception as msg:
print(msg)
print("insert into data faild!")
# 关闭数据库连接
db.close()
# 保存文件
newWb.save(file_out_path)
28、python3.7(windows)将ORACLE11gR2中的数据取出写入excel表的更多相关文章
- vlookup函数基本使用--如何将两个Excel表中的数据匹配;excel表中vlookup函数使用方法将一表引到另一表
vlookup函数基本使用--如何将两个Excel表中的数据匹配:excel表中vlookup函数使用方法将一表引到另一表 一.将几个学生的籍贯匹配出来‘ 二.使用查找与引用函数 vlookup 三. ...
- ListView中的数据表格写入Excel中
SaveFileDialog sfd = new SaveFileDialog(); sfd.DefaultExt = "xls"; sfd.Filter = "Exce ...
- java中的数据导出到Excel表中
整个项目中导出数据到.Excel的源码 import java.io.BufferedOutputStream; import java.io.FileInputStream; import java ...
- Qt中将QTableView中的数据导出为Excel文件
如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类 ...
- WPF-将DataGrid控件中的数据导出到Excel
原文:WPF-将DataGrid控件中的数据导出到Excel 导出至Excel是非常常见,我们可以用很多类库,例如Aspose.NOPI.Interop,在这里我们使用微软自家的工具.我的WPF绑定的 ...
- DataTable to Excel(使用NPOI、EPPlus将数据表中的数据读取到excel格式内存中)
/// <summary> /// DataTable to Excel(将数据表中的数据读取到excel格式内存中) /// </summary> /// <param ...
- 如何使用免费控件将Word表格中的数据导入到Excel中
我通常使用MS Excel来存储和处理大量数据,但有时候经常会碰到一个问题—我需要的数据存储在word表格中,而不是在Excel中,这样处理起来非常麻烦,尤其是在数据比较庞大的时候, 这时我迫切地需要 ...
- c#.net循环将DataGridView中的数据赋值到Excel中,并设置样式
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel ...
- phpexcel的写操作将数据库中的数据导入到excel中
这个版本据说是可以支持excel2007,但是我使用2007编辑的xlsx是无法获得该库的支持.于是乎我就将它转化为2003.感觉支持地很好. 下面介绍一下具体的使用: require_once('. ...
随机推荐
- [bug] springboot 静态资源 layui.css 404
目录结构 引用路径 <link rel="stylesheet" href="../static/layui/css/layui.css" type=&q ...
- Deepin深度应用商店和系统更新不正常的解决方法
Deepin深度应用商店和系统更新不正常的解决方法 2020-02-04 10:25:09作者:i8520稿源:深度站 如果你的Deepin深度应用商店和系统更新不正常,可采用以下方法来解决问题. 解 ...
- C++知识点案例 笔记-4
1.纯虚函数 2.抽象类 3.内部类 4.运算符重载 5.类的函数重载 6.友元的函数重载 1.纯虚函数 ==纯虚函数== //有时基类中无法给出函数的具体体现,定义纯虚函数可以为派生函数保留一个函数 ...
- VUE如何关闭代码规范extra semiclon/VUE新手必看-(转载)
VUE如何关闭代码规范 最近在学VUE,作为一个设计转前端的小白鼠. 总是能碰到各种各样奇葩的问题. 比如我碰到了 extra semicolon 百度了下说是这个原因造成的: 但是!!!!!关键点来 ...
- 10.2-3 ifup&ifdown:激活与禁用网络接口
ifup:激活网络接口 ifup 和 ifdown 命令用于激活指定的网络接口.ifup命令其实是一个Shel脚本,有Shel基础的读者可以使用which命令来找到这个脚本并读一读.命令可读取 ...
- 【三】Kubernetes学习笔记-Pod 生命周期与 Init C 介绍
一.容器生命周期 Init C(初始化容器)只是用于 Pod 初始化的,不会一直随着 Pod 生命周期存在,Init C 在初始化完成之后就会死亡. 一个 Pod 可以有多个 Init C,也可以不需 ...
- Lua时间互转
1. 时间戳转成格式化字符串 直接利用函数os.date()将时间戳转化成格式化字符串. local timestamp = 1561636137; local strDate = os.date(& ...
- Java中Map<Key, Value>存储结构根据值排序(sort by values)
需求:Map<key, value>中可以根据key, value 进行排序,由于 key 都是唯一的,可以很方便的进行比较操作,但是每个key 对应的value不是唯一的,有可能出现多个 ...
- YOLO v1到YOLO v4(下)
YOLO v1到YOLO v4(下) Faster YOLO使用的是GoogleLeNet,比VGG-16快,YOLO完成一次前向过程只用8.52 billion 运算,而VGG-16要30.69bi ...
- Gamma矫正技术
Gamma矫正技术 一. gamma校正背景 在电视和图形监视器中,显像管发生的电子束及其生成的图像亮度并不是随显像管的输入电压线性变化,电子流与输入电压相比是按照指数曲线变化的,输入电压的指数要大于 ...