Странная проблема при импорте листа Excel в MySQL
У меня возникла странная проблема при импорте .xlsx файл в базу данных mysql с помощью php скрипта.
Файлы excel создаются с другого сервера oracle db и копируются на мой сервер. Скрипт не вставляет никаких записей до тех пор, пока и если, я вручную- Откройте файл,
- сохраните его и
- закройте его.
Для файлов 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" /> <input type="submit" value="Insert" />
</form>
И я использую simplexlsx.класс.класс php из здесь
1 ответ:
Я думаю, проблема возникает потому, что у нас нет MS Office/Excel, установленного на сервере oracle, откуда создаются файлы excel.
Xlsx файлы могут иметь свои данные ячейки, хранящиеся в любой из " встроенных строк" или "общие строки" (Я вызываю эти термины по памяти). Некоторые библиотеки предполагают / поддерживают только одно, а не другое, и Excel может быть "исправление" файла при открытии, сохранении и закрытии-это действительно плохо о том, чтобы сделать это, на самом деле. Я незнакома с этой библиотекой php, но я сильно подозреваю, что это как-то связано. - Майкл-sqlbot 12 несколько часов назад
Поэтому я настраиваю скрипт бота (с помощью AutoIT), чтобы открыть все файлы excel и сохранить их, прежде чем выполнять этот скрипт.
Если кто-то знает лучший обходной путь, то, пожалуйста, упомяните об этом. Спасибо.