Python读取Oracle写入Excel

# Python读取Oracle写入Excel

部分内容来自搜索引擎,参考网站知乎、CSDN、百度。

## 介绍

某ERP系统的报表不支持增加产品的自定义字段,但使用人需要相关的自定义字段内容。解决方法:由ERP系统导出报表为excel文件,依据excel内编码列,读取oracle数据库内与之对应的自定义字段,然后写回excel,保存为新的excel文件,打包为脱离python和Oracle环境的exe文件。

### 软件架构

1. python 3.7.6 64位

2. Oracle 11g

3. cx_Oracle-8.1.0-cp37-cp37m-win_amd64.whl

4. openpyxl 3.0.3

5. 操作系统 Windows10 64位

### 遇到的问题

1. cx-Oracle的安装:如果直接pip安装会无法使用,需要在Oracle官网下载对应数据库版本的cx_Oracle,这里使用的是cx_Oracle-8.1.0-cp37-cp37m-win_amd64.whl。注意:此文件不能修改文件名,否则无法安装。

2. cx-Oracle安装好后,如果电脑没有Oracle客户端仍然无法使用,解决办法:将oci.dll、oraocci11.dll、oraociei11.dll复制到pthon安装目录的\Lib\site-packages下即可。

3. 使用pyinsaller -F打包exe后程序无法运行,解决方法:使用pyinsaller打包exe,然后修改pyorcl.spec,将oci.dll、oraociei11.dll的路径加入a.binaries中,如下:

exe = EXE(pyz,

a.scripts,

a.binaries+[('oci.dll','d:\\instantclient_11_2\\oci.dll','BINARY'),('oraociei11.dll','d:\\instantclient_11_2\\oraociei11.dll','BINARY')],

a.zipfiles,

a.datas,

[],

name='pyorcl',

debug=False,

bootloader_ignore_signals=False,

strip=False,

upx=True,

upx_exclude=[],

runtime_tmpdir=None,

console=False )

使用pyorcl.spec重新打包exe即可,修改前生成的exe文件大约6M,修改后生成的exe文件约50M。

### 使用说明

将模板excel文件与exe 放在同一目录下,运行exe成功后会生成新的excel文件。

运行前

运行后


编辑于 2021-03-12 20:36