将数据从VBA(excel)发送到php,反之亦然

时间:2017-12-31 23:13:39

标签: php mysql vba

基本上我想使用php作为中间件与MYSQL服务器进行通信。

由于需要安装驱动程序,我无法直接连接到数据库,我们的IT不允许在我们公司的计算机上安装驱动程序。

我理解如何使用vba插入数据 - > php-> mysql但我无法弄清楚如何从mysql获取数据到excel。 vba-> PHP-> mysql-> PHP-> VBA。

我想进行查询并将结果发送到vba excel。

这是可行的VBA代码,但它也会发回多个空格。我不确定这是否是正确的方法。

    Private Sub ExtractPHP()
    Dim item As String
    Dim objHTTP As Object
    Dim URL As String
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
    URL = "http://localhost/php/requestdata.php"
    objHTTP.Open "POST", URL, False
    objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencode"
    objHTTP.send ("")
    Worksheets("hiddendata").Range("k4").Value = Replace(objHTTP.responseText, " ", "")
    End Sub

PHP代码如下。

    <?php 
    $con = mysqli_connect("localhost","root","","php") or die("Connection was not created!");
    $select = "select name FROM users where id=5";
    $run = mysqli_query($con,$select);
    $value = mysqli_fetch_array($run);
    $result = $value["name"];
    echo $result;
    ?>

放置在excel文件中的结果在文本下方有多个空格。这是在excel和mysql之间进行通信的正确方法吗?

2 个答案:

答案 0 :(得分:0)

我不确定VBA方法以及您需要做什么,但一种解决方案是编写requestdata.php以将查询结果解析为.csv文件,然后通过VBA将其加载到Excel中。由于PHP已经有一个函数fputcsv($file, $records)可以使用(documentation),因此将结果数组解析为.csv纯文本格式变得更加微不足道。

答案 1 :(得分:0)

我可以帮助你10%导致我用几种语言编程,但没有什么vba / excell。我在php中编程...无论如何我的答案是: 假设你在C中创建:一个新文件夹,你在那里创建一个runme.bat文件。 使用一种方法运行外部.bat文件并从runme.bat中获取外部结果或多或少像

Execute a command in command prompt using excel VBA

Wait for shell command to complete

你可以像我一样使用一个方法来运行那批PHP cli:

你也可以在该文件夹中删除runme.php:

<?php
   if(isset($argv[1])){
     echo($argv[1]);
    //here you can drop some mysql
   }
?>

然后你应该了解如何重新配置​​php ini以连接到mysql,你可能会遇到一些问题 PHP: mysql_connect() won't work via command line

如果您输入这样的命令,我已经通过Windows cmd检查并运行 c:\ xampp \ php&gt; php“c:\ test \ runme.php”yep2

你得到“yep2”

作为c:\ test \'s runme.bat版本:

rem @echo off
set parameter=%1
set PHP_BIN="c:\xampp\php\php.exe"
set script=%cd%\runme.php
%PHP_BIN%  %script% %parameter%

对于测试我们在cmd:runme yep2中调用它 结果:yep2

然后修改批处理你可以填写mysql中的数据让我们说你会调用不是runme.php而是putmysqldata.php。 此时创建另一个文件php从mysql读取(即使你只使用一个文件php通过不同的参数调用它来写或读)所以你将能够从mysql读取

如果你不太了解vba或怎么做,那就不容易了。 按照这些步骤,我想如果你比我更了解一些vba,你可以找出最短的方法。