Парсинг значений select из excell файла

arsen

НЕрядовой
Регистрация
16 Июн 2011
Сообщения
1.078
Реакции
355
Приветствую
делаю калькулятор для сайта, исходные данные будут в 3 списках select вопрос- как подгрузить значения в эти селекты из ексель файла
 
Приветствую
делаю калькулятор для сайта, исходные данные будут в 3 списках select вопрос- как подгрузить значения в эти селекты из ексель файла
Рекомендую использовать CSV формат. В противном случае ищи библиотеку вроде PHPExcel для работы с excel файлами.
Для просмотра ссылки Войди или Зарегистрируйся для размышления.
 
Рекомендую использовать CSV формат. В противном случае ищи библиотеку вроде PHPExcel для работы с excel файлами.
Для просмотра ссылки Войди или Зарегистрируйся для размышления.
Не рекомендую использовать CSV формат, если Заказчик просит парсить XLS.
А вот библиотека PHPExcel действительно зачетная, сам пользуюсь.
Я парсю как-то так:
PHP:
@set_time_limit(0);
require_once 'libs/excel/PHPExcel/IOFactory.php';
$objPHPExcel = PHPExcel_IOFactory::load($filename);
$objPHPExcel->setActiveSheetIndex(0);
$aSheet = $objPHPExcel->getActiveSheet();
//этот массив будет содержать массивы содержащие в себе значения ячеек каждой строки
$array = array();
//получим итератор строки и пройдемся по нему циклом
foreach($aSheet->getRowIterator() as $row){
//получим итератор ячеек текущей строки
$cellIterator = $row->getCellIterator();
//пройдемся циклом по ячейкам строки
//этот массив будет содержать значения каждой отдельной строки
$item = array();
foreach($cellIterator as $cell){
//заносим значения ячеек одной строки в отдельный массив
array_push($item, $cell->getCalculatedValue());
}
//заносим массив со значениями ячеек отдельной строки в "общий массив строк"
array_push($array, $item);
}
В $array получается массив строк файла, перебираем его foreach ($array as $key=>$rows) и т.д.
 
Не рекомендую парсить Excel каждый раз для вывода списков select, лучше спарсить списки при загрузке нового файла excel.
Списки лучше хранить в текстовых файлах, типа
Код:
<?php
$sel_1 = array(
'val1',
'val2'
);
$sel_2 = array(
'val1',
'val2'
);
?>
 
Я бы советовал другую библиотеку -- PHP Excel Reader от Matt Kruse:
Скрытое содержимое доступно для зарегистрированных пользователей!


С большими файлами она точно лучше работает, да и в мелочах удобнее.
 
Я бы советовал другую библиотеку -- PHP Excel Reader от Matt Kruse:


С большими файлами она точно лучше работает, да и в мелочах удобнее.
Какие траблы с PHPExcel? Пользуюсь ток ей. Даже на хабре писали в свое время о парсинге больших файлах Для просмотра ссылки Войди или Зарегистрируйся Первая статья, которая и подбила на выбор данной либы. Для работы с файлами по 10-20к вполне норм и оч удобна в использовании. Чаще всего юзал для парсинга и конвертации данных csv <-> xlsx
 
Какие траблы с PHPExcel?
У меня исходные файлы на сотни мегабайт, их сам Эксель с трудом ворочает. Excel Reader с ними проще справлялся. Плюс была поначалу надежда вытащить форматирование внутри ячеек, но пока средствами ридеров это нереально.
 
У меня исходные файлы на сотни мегабайт
.. и у Вас что-то не то с рабочими инструментами. Похоже, Вы используете Excel там, где должны использовать базу данных.
MS Access, 1C или любой язык с MySQL, Postgres или NoSQL

PS
Недавно разбирался с тормозами файла Экселя в отделе экономики. Файл 20Мб, нереальные тормоза при открытии. Всё из-за того, что тянутся данные с 2014г., обновляется из файлов, кое-где потеряны связи и формулы заходят в циклические ссылки. Найти, где все ошибки — нереально. Предложил переписать с нуля — экономист отказалась. Мазохистка, наверное.
 
Последнее редактирование:
.. и у Вас что-то не то с рабочими инструментами. Похоже, Вы используете Excel там, где должны использовать базу данных.

Вы ведь знаете, что такое legacy? :) ну вот и мне в наследство достались эти огромные эксельки. И как раз решаю задачу переноса данных из них в БД.

Только вот форматирование ячеек все равно теряется, я не нашел пока способ сохранять его. Всякие "красный жирный шрифт" хотя бы... если кто найдет решение, делитесь!
 
Только вот форматирование ячеек все равно теряется, я не нашел пока способ сохранять его. Всякие "красный жирный шрифт" хотя бы... если кто найдет решение, делитесь!
PHPExcel прекрасно распознает вот это вот всё. Но вот файлы конечно большие, может вылетать по памяти.
 
Назад
Сверху