PHP импортирует Excel в базу данных (xls & xlsx)
Я попытался найти некоторые плагины для импорта файла Excel в базу данных MySQL, одна из которых http://code.google.com/p/php-excel-reader/
Инструмент настолько мощный, что он отображает весь контент excel в html.
Однако, мне кажется, мне просто нужно прочитать файл Excel и извлечь содержимое, например, в массив, а затем написать инструкцию SQL для ввода в базу данных.
Будут ли хорошие коды и пакеты? Спасибо!
Ответы
Ответ 1
Это лучший плагин с соответствующей документацией и примерами
Плюс: вы можете обратиться за помощью в свой форум обсуждения, и вы получите ответ в течение дня от самого автора, действительно впечатляет.
Ответ 2
Иногда мне нужно импортировать большие файлы xlsx в базу данных, поэтому я использую spreadsheet-reader
, так как он может читать файл за строку. Это очень эффективный способ сохранить память.
<?php
// If you need to parse XLS files, include php-excel-reader
require('php-excel-reader/excel_reader2.php');
require('SpreadsheetReader.php');
$Reader = new SpreadsheetReader('example.xlsx');
// insert every row just after reading it
foreach ($Reader as $row)
{
$db->insert($row);
}
?>
https://github.com/nuovo/spreadsheet-reader
Ответ 3
Если вы можете конвертировать .xls в .csv перед обработкой, вы можете использовать следующий запрос, чтобы импортировать csv в базу данных:
load data local infile 'FILE.CSV' into table TABLENAME fields terminated by ',' enclosed by '"' lines terminated by '\n' (FIELD1,FIELD2,FIELD3)
Ответ 4
Если вы сохраните файл excel в виде CSV файла, вы можете импортировать его в базу данных mysql с помощью таких инструментов, как PHPMyAdmin
Я не уверен, поможет ли это в вашей ситуации, но файл csv вручную или программно будет намного проще анализировать в базе данных, чем файл Excel, о котором я подумал бы.
EDIT: Я бы предложил посмотреть другие ответы, а не мои, поскольку ответ @diEcho кажется более подходящим.
Ответ 5
Я написал унаследованный класс:
<?php
class ExcelReader extends Spreadsheet_Excel_Reader {
function GetInArray($sheet=0) {
$result = array();
for($row=1; $row<=$this->rowcount($sheet); $row++) {
for($col=1;$col<=$this->colcount($sheet);$col++) {
if(!$this->sheets[$sheet]['cellsInfo'][$row][$col]['dontprint']) {
$val = $this->val($row,$col,$sheet);
$result[$row][$col] = $val;
}
}
}
return $result;
}
}
?>