Comments 18
Оформили бы в виде класса и на гитхаб — было бы супер.
Если это нужно разово, а не на постоянной основе — я бы сделал по другому: из exel в SQL Server, ну а тут уже точно решения есть.
Если это нужно разово, а не на постоянной основе — я бы сделал по другому: из exel в SQL Server, ну а тут уже точно решения есть.
Если нужно на постоянной основе для больших файлов, есть очень шустрые библиотеки на c++, и биндинги к ним в виде расширения.
Было бы здорово еще mysql2excel модуль. А то надоело в csv все выгружать :-)
Задачи импорта обычно решаю сохранением в .CSV, и не каких PHPExcel не надо.
Парсить .CSV на PHP проще пареной репы.
Парсить .CSV на PHP проще пареной репы.
Я через phpmyadmin загружаю xls'ы, там все есть. Если есть потребность, можно оттуда забрать более мощный класс.
for ($row = $columns_name_line + 1; $row <= $worksheet->getHighestRow(); $row++)
Есть необходимосить вызывать $worksheet->getHighestRow() в цикле?
Экспортим в .CSV, потом берем какой-нить SQLYog и импортим. Профит.
У меня ячейки с датой и временем их Excel преобразуются, например, не «26.10.2013 6:18:14», а «41573,262662037»
как можно не форматируя сам файл Excel преобразовать данный текст в дату посредством php?
как можно не форматируя сам файл 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.
Из Excel в MySQL. Небольшая функция на PHP (fixed)