Pull to refresh

Comments 18

Оформили бы в виде класса и на гитхаб — было бы супер.
Если это нужно разово, а не на постоянной основе — я бы сделал по другому: из exel в SQL Server, ну а тут уже точно решения есть.
Если нужно на постоянной основе для больших файлов, есть очень шустрые библиотеки на c++, и биндинги к ним в виде расширения.
Точно не помню, вроде libXL использовал.
Было бы здорово еще mysql2excel модуль. А то надоело в csv все выгружать :-)
Задачи импорта обычно решаю сохранением в .CSV, и не каких PHPExcel не надо.
Парсить .CSV на PHP проще пареной репы.
Не говоря уже о том, что MySQL сам умеет таблицы из CSV создавать
А если файлов много. И, кстати, как при сохранении в CSV ведут себя объединенные ячейки?
Я через phpmyadmin загружаю xls'ы, там все есть. Если есть потребность, можно оттуда забрать более мощный класс.
for ($row = $columns_name_line + 1; $row <= $worksheet->getHighestRow(); $row++)


Есть необходимосить вызывать $worksheet->getHighestRow() в цикле?
Экспортим в .CSV, потом берем какой-нить SQLYog и импортим. Профит.
Светлана, подскажите, пожалуйста, а как быть если таблица является универсальным отношением?
Не поняла вопроса. Вы что-то хотите делать с данными из Excel-а? Преобразовать их во что-то перед вставкой в базу?
У меня ячейки с датой и временем их Excel преобразуются, например, не «26.10.2013 6:18:14», а «41573,262662037»
как можно не форматируя сам файл Excel преобразовать данный текст в дату посредством php?
В Excel`е даты хранятся в формате «дней с 1.1.1900», то есть 41573 / 365 = 113. Время высчитывается так: 0.26266 * 24 = 6.30384 (часы), 0.30384 * 60 = 18.2304 (минуты), 0.2304 * 60 = 14.424 (секунды) — 6:18:14.
спасибочки!
разбил данные на части и записал в массив, и если первая ячейка больше, чем двухзначное число, то вычисляю дату вашим способом, иначе просто в нужном порядке ее собираю )
  $tdate = explode('#', str_replace('.', '#', str_replace(':', '#', str_replace(' ', '#', $exceldate))));
  if (($tdate[0] / 100) > 1) {
  	$tdate[3] = ($exceldate - $tdate[0])*24;
  	$tdate[4] = ($tdate[3] - floor($tdate[3]))*60;
  	$tdate[3] = floor($tdate[3]);
  	$tdate[5] = ($tdate[4] - floor($tdate[4]))*60;
  	$tdate[4] = floor($tdate[4]);
  	$tdate[5] = round($tdate[5]);
  	$tdate = date('Y-m-d H:i:s', mktime($tdate[3], $tdate[4], $tdate[5], 1, $tdate[0]-1, 1900));
  }
  else
  	$tdate = date('Y-m-d H:i:s', mktime($tdate[3], $tdate[4], $tdate[5], $tdate[1], $tdate[0], $tdate[2]));


Кто — нибудь тестил на больших файлах >30 мб?
Sign up to leave a comment.

Articles