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文件。
运行前
运行后