在MySQL中导入Excel工作表的奇怪问题

时间:2015-12-22 19:35:29

标签: php mysql excel

我有一个奇怪的问题,在使用php脚本将.xlsx文件导入mysql数据库时。

excel文件是从另一个oracle db服务器生成的,正在我的服务器上复制。除非我手动

,否则脚本不会插入任何记录
  1. 打开文件,
  2. 保存,
  3. 关闭它。
  4. 这很奇怪,因为我没有对文件进行任何更改,也没有任何更改。我已经在保存文件之前和之后比较了文件权限,但没有任何变化。

    对于excel文件,我在当前服务器上创建工作正常,没有任何麻烦。

    数据库文件     

        // Check connection
        if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
        }
        else{
            echo "Connection Made Succesfully !!!";
        }
    ?>
    

    代码示例

    <?php
    include 'db.php';
    if (isset($_FILES['file'])) {
        IF($_POST["TotalCol"] && $_POST["TableName"])
        {
            require_once "simplexlsx.class.php";
            $xlsx = new SimpleXLSX( $_FILES['file']['tmp_name'] );
             list($cols, $rows) = $xlsx->dimension();
               foreach( $xlsx->rows() as $k => $r) 
                 { // loop through excel worksheet
                     $sub = mysql_escape_string($r[0]);
                     for ($x = 1; $x < $_POST["TotalCol"]; $x++) {
                        $sub .= "','".mysql_escape_string($r[$x]);
                        } 
                     //$sub = mysql_escape_string($r[0])."','" . mysql_escape_string($r[1]);
                     //$q = "insert into test2 value('" . mysql_escape_string($r[0])."','" . mysql_escape_string($r[1])."','" . mysql_escape_string($r[2]) . "');";
                     $q = "insert into ".$_POST["TableName"]." value('" . $sub . "');"
    
                        if ($conn->query($q) === TRUE) {
                            echo "New record created successfully";
                        } else {
                            echo "<br>// Error: " . $sql . "<br>" . $conn->error . "<br>";
                        }
                } // IF ENDS HERE
            }
    }
    ?>
    
    <h1>Upload</h1>
    <form method="post" enctype="multipart/form-data">
    *.XLSX <input type="file" name="file"  /></br><input type="Text" name="TableName" class="TableName" placeholder="TableName" /></br><input type="Text" name="TotalCol" class="TotalCol" placeholder="Total Columns" />&nbsp;&nbsp;<input type="submit" value="Insert" />
    </form>
    

    我正在使用here中的simplexlsx.class.php类

1 个答案:

答案 0 :(得分:0)

我想,问题出现了,因为我们没有在oracle服务器上安装MS Office / Excel,从那里生成excel文件。

  

xlsx文件可以将其单元格数据存储在&#34;内联字符串&#34;   或&#34;共享字符串&#34; (我从记忆中想出这些术语)。一些   库假设/支持只有一个而不支持另一个,Excel可能是   &#34;定影&#34;打开,保存和关闭时的文件 - 它非常糟糕   事实上,这样做。我不熟悉这个php库,但是   我强烈怀疑这在某种程度上是相关的。 - 迈克尔 - sqlbot 12   小时前

因此,在执行此脚本之前,我配置了一个bot脚本(使用AutoIT)来打开所有excel文件并保存它们。

如果有人知道任何更好的解决方法,那么请提及它。感谢。