PHP импортирует Excel в базу данных (xls & xlsx)

Я попытался найти некоторые плагины для импорта файла Excel в базу данных MySQL, одна из которых http://code.google.com/p/php-excel-reader/

Инструмент настолько мощный, что он отображает весь контент excel в html.

Однако, мне кажется, мне просто нужно прочитать файл Excel и извлечь содержимое, например, в массив, а затем написать инструкцию SQL для ввода в базу данных.

Будут ли хорошие коды и пакеты? Спасибо!

Ответы

Ответ 1

Это лучший плагин с соответствующей документацией и примерами

https://github.com/PHPOffice/PHPExcel

Плюс: вы можете обратиться за помощью в свой форум обсуждения, и вы получите ответ в течение дня от самого автора, действительно впечатляет.

Ответ 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;
 }

}
?>