Странная проблема при импорте листа Excel в MySQL


У меня возникла странная проблема при импорте .xlsx файл в базу данных mysql с помощью php скрипта.

Файлы excel создаются с другого сервера oracle db и копируются на мой сервер. Скрипт не вставляет никаких записей до тех пор, пока и если, я вручную
  1. Откройте файл,
  2. сохраните его и
  3. закройте его.
Это довольно странно, потому что я не делаю никаких изменений в файле, вообще никаких изменений. Я уже сделал это. сравнил права доступа к файлам, до и после сохранения файлов и нет никаких изменений.

Для файлов 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>

И я использую simplexlsx.класс.класс php из здесь

1 2

1 ответ:

Я думаю, проблема возникает потому, что у нас нет MS Office/Excel, установленного на сервере oracle, откуда создаются файлы excel.

Xlsx файлы могут иметь свои данные ячейки, хранящиеся в любой из " встроенных строк" или "общие строки" (Я вызываю эти термины по памяти). Некоторые библиотеки предполагают / поддерживают только одно, а не другое, и Excel может быть "исправление" файла при открытии, сохранении и закрытии-это действительно плохо о том, чтобы сделать это, на самом деле. Я незнакома с этой библиотекой php, но я сильно подозреваю, что это как-то связано. - Майкл-sqlbot 12 несколько часов назад

Поэтому я настраиваю скрипт бота (с помощью AutoIT), чтобы открыть все файлы excel и сохранить их, прежде чем выполнять этот скрипт.

Если кто-то знает лучший обходной путь, то, пожалуйста, упомяните об этом. Спасибо.