Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 启用远程postgres数据库和excel工作簿之间的导入/导出流_Python_Excel_Postgresql_Vba - Fatal编程技术网

Python 启用远程postgres数据库和excel工作簿之间的导入/导出流

Python 启用远程postgres数据库和excel工作簿之间的导入/导出流,python,excel,postgresql,vba,Python,Excel,Postgresql,Vba,我正在尝试创建一个程序,可以通过VBA将postgres数据库表导入excel,让某人进行编辑,然后通过VBA将编辑后的数据作为新表导出到数据库中 如果这个过程不必同时使用windows和mac版本的office,那么这将是一个相对简单(尽管程序复杂)的任务 我最初的计划是让用户下载python,然后安装psycopg驱动程序。然后,我将python脚本作为字符串存储在vba模块中,该模块将python脚本写入文件,将SQL字符串传递给python脚本,并让python直接从数据库获取数据。Py

我正在尝试创建一个程序,可以通过VBA将postgres数据库表导入excel,让某人进行编辑,然后通过VBA将编辑后的数据作为新表导出到数据库中

如果这个过程不必同时使用windows和mac版本的office,那么这将是一个相对简单(尽管程序复杂)的任务

我最初的计划是让用户下载python,然后安装psycopg驱动程序。然后,我将python脚本作为字符串存储在vba模块中,该模块将python脚本写入文件,将SQL字符串传递给python脚本,并让python直接从数据库获取数据。Python随后会拆分一个文件,这将导致等待该文件存在的VBA循环终止,然后导入数据并填充电子表格

编写只需要相同的过程,除了excel会在调用脚本之前导出包含要上传到postgres的数据的工作表

不幸的是,让用户在mac上安装psycopg2会让他们处于痛苦的状态,因为如果不下载称为“xcode”的1+GB大型软件包,然后安装mac端口,就无法简单地下载和安装该软件包,而只需运行一个简单的python脚本即可连接到postgres(即使这样也不起作用)!不用说,这是完全不能接受的

我的编程经验主要来自于创建要在本地机器上运行的脚本,所以我不确定如何实现这一点

我能想到的最简单的方法是在ubuntu机器上设置某种基于python的服务器,该服务器容纳postgres,并以某种方式允许excel工作簿生成的本地python脚本将数据流发送给它,然后脚本将上传到postgres数据库pt将向基于python的服务器发送命令,然后该服务器将数据上传到ftp服务器。随后,本地python脚本将加载该数据,对其进行处理,并将其输出到一个文件,允许excel访问该数据

基本上,我只需要一个解决方案,允许一个从用户机器上执行的python程序连接到postgres主机,并告诉它运行一个脚本,该脚本生成一个文件供下载,或者以某种方式将数据直接流回到用户的python程序中,而无需用户下载任何外部程序

我已经开始学习java的基础知识,所以如果java允许一种更简单的方法来完成这项任务,我非常愿意尝试一下。截至本文发表之日,我只用java编程了1.5天……所以在回答时请记住这一点


提前感谢!

您应该能够使用来实现这一点。基本上,您希望构建一个独立的可执行文件,并将所有依赖项捆绑在其中。

直接从Windows计算机上的VBA查询数据库很容易。我不熟悉Mac OS,但Postgresql有一个适用于Mac的ODBC驱动程序,所以我会想到它也可以吗?