В моем сценарии я хотел бы прочитать файл .xls с «browse & «Файл ввода», тогда я не хочу, чтобы PHPExcel считывал / загружал .xls и вставлял значения ячеек в mysql.
Этот скрипт работал со статическим файлом: $ path = ‘file.xls’;
Но я не могу заставить скрипт загрузки работать с моим кодом.
ОШИБКА:
Неустранимая ошибка: необработанное исключение «PHPExcel_Reader_Exception» с сообщением «Не удалось открыть для чтения! Файл не существует
Может кто-нибудь сказать, пожалуйста, что не так?
Или есть какой-то код, который мне не хватает?
HTML Выберите файл:
<form class="form-horizontal well" action="php/import_excel.php" method="post" name="import_excel" enctype="multipart/form-data">
<h4>Ladda upp tabell</h4>
<div class="input-group">
<span class="input-group-btn">
<span class="btn btn-primary btn-file">
Bläddra… <input type="file" multiple>
</span>
</span>
<input type="text" class="form-control" readonly>
</div>
<span class="help-block">
Välj en excel fil
</span>
<div class="pull-right">
<button type="submit" id="submit" name="Import" class="btn btn-primary button-loading" data-loading-text="Loading...">Ladda upp</button>
</div>
<br />
</form>
Прочитайте PHP и вставьте в MySQL:
//Load phpexcel includes
require '../Classes/PHPExcel.php';
require_once '../Classes/PHPExcel/IOFactory.php';
//Establish connection to mysql
$conn=mysql_connect($host,$username,$password) or die("Could not connect");
mysql_select_db($dbname,$conn) or die("could not connect database");
//Load file
if(isset($_POST["Import"])){
echo $path=$_FILES["file"]["tmp_name"];
//$path = "atbl.xls";
$objPHPExcel = PHPExcel_IOFactory::load($path);
//Loop threw file to get data
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
$worksheetTitle = $worksheet->getTitle();
$highestRow = 20; //$worksheet->getHighestRow(); // e.g. 10
$highestColumn = 'G'; //$worksheet->getHighestColumn(''); // e.g 'F'
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$nrColumns = ord($highestColumn) - 64;
//Echo file info
echo "<br>The worksheet ".$worksheetTitle." has ";
echo $nrColumns . ' columns (A-' . $highestColumn . ') ';
echo ' and ' . $highestRow . ' row.';
echo '<br>Data: <table border="1"><tr>';
//Loop threw colum, rows and cells
for ($row = 11; $row <= $highestRow; ++ $row) {
echo '<tr>';
for ($col = 0; $col < $highestColumnIndex; ++ $col) {
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val = $cell->getCalculatedValue();
//$dataType = PHPExcel_Cell_DataType::dataTypeForValue($val);
echo '<td>' . $val . '<br></td>';
}
echo '</tr>';
}
echo '</table>';
}
for ($row = 11; $row <= $highestRow; ++ $row) {
$val=array();
for ($col = 0; $col < $highestColumnIndex; ++ $col) {
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val[] = $cell->getCalculatedValue();
}
//Insert data from file to mysql
$sql="INSERT INTO phpexcel(objekt_nr, objekt_rev, element_nr, element_langd, element_bredd, element_hojd)
VALUES ('".$val[0] . "','" . $val[1] . "','" . $val[2]. "','" . $val[4]. "','" . $val[5]. "','" . $val[6]. "')";
//echo $sql."\n";
mysql_query($sql) or die('Invalid query: ' . mysql_error());
}
}
?>
HTML код отсутствовал имя & Я бы:
<input type="file" name="file" id="file" multiple>
Других решений пока нет …