Чтение листа XLSX для подачи таблицы MySQL с использованием PHPExcel - PullRequest
17 голосов
/ 23 августа 2011

Я нашел библиотеку PHPExcel блестящей для работы с файлами Excel с помощью PHP (чтение, запись и т. Д.).

Но нигде в документации не объясняется как читать лист XLSX для подачи в таблицу MySQL ...

Извините за этот глупый вопрос, но мне он нужен для моей работы, и я не нашел ответа в Интернете.

Небольшой пример может быть очень полезным.

Большое спасибо.

ОБНОВЛЕНО:

Я уточняю свой вопрос:

Единственная часть кода, которую я нашел в документации, которая может мне помочь, - это прочитать файл Excel и отобразить его в таблице HTML:

`require_once 'phpexcel/Classes/PHPExcel.php';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);

$objPHPExcel = $objReader->load("edf/equipement.xlsx");
$objWorksheet = $objPHPExcel->getActiveSheet();

$highestRow = $objWorksheet->getHighestRow(); 
$highestColumn = $objWorksheet->getHighestColumn(); 

$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 

echo '<table border="1">' . "\n";
for ($row = 1; $row <= $highestRow; ++$row) {
  echo '<tr>' . "\n";

  for ($col = 0; $col <= $highestColumnIndex; ++$col) {
    echo '<td>' . $objWorksheet->getCellByColumnAndRow($col, $row)->getValue() . '</td>' . "\n";
  }

  echo '</tr>' . "\n";
}
echo '</table>' . "\n";`

Я знаю, что могу использовать цикл для кормления своей таблицы MySQL, но я не знаю, как ... Я не знаю в ООП ...

Может кто-нибудь помочь мне, пожалуйста?

Ответы [ 2 ]

8 голосов
/ 02 сентября 2011

Первый for проходит по строкам, а второй - по столбцам. Итак, есть много решений для вашей «проблемы».

Вы можете, например, заполнить массив и сделать оператор вставки для каждой строки. Как следующее:

$rows = array();
for ($row = 1; $row <= $highestRow; ++$row) {
  for ($col = 0; $col <= $highestColumnIndex; ++$col) {
    $rows[$col] = mysql_real_espace_string($objWorksheet->getCellByColumnAndRow($col, $row)->getValue());
  }

  mysql_query("INSERT INTO your_table (col1,col2) VALUES ($rows[1],$rows[2])");
}

Очевидно, этот код можно улучшить.

7 голосов
/ 09 ноября 2011

Вот код

$inputFileName = $upload_path . $filename;
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputFileName);
$objWorksheet = $objPHPExcel->getActiveSheet();

$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$rows = array();
for ($row = 1; $row <= $highestRow; ++$row) {
  for ($col = 0; $col <= $highestColumnIndex; ++$col) {
    $rows[$col] = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
  }
  mysql_query("INSERT INTO upload (`item_number`,`qty_sold`,`cost_home`) VALUES ($rows[1],$rows[2],$rows[3])");
}

?>

Я пробовал mysql_query ("INSERT INTO upload (col1, col2) VALUES ($ lines [1], $ row [2])"); но не сработало. Стол остается пустым

...