| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Системное программирование > Парсим xls |
| Автор: WERT 26.6.2007, 08:17 |
| Подскажите, какой модуль лучше всего использовать для того, чтобы распарсить Exsel-файл. есть тема на данном форуме http://forum.vingrad.ru/topic-144702.html, но она не совсем профильная. Интересует именно чем проще. Предполагается наличие только цифоровой и текстовой информации. Без диаграмм и т.п. |
| Автор: dimes 26.6.2007, 09:10 |
| Насчет проще не уверен но я использовал Spreadsheet::ParseExcel Поищи на search.cpan.org там много разных парсеров, по примерам кодов сам решишь какой самый простой |
| Автор: nitr 26.6.2007, 09:33 |
| dimes, минус этого модуля - медленно. WERT, но это самый оптимальный из многих. Можно (если Win OS) потестировать с OLE... |
| Автор: dimes 26.6.2007, 09:45 |
Ну, спорить не буду, на скорость я его не тестил. |
| Автор: WERT 26.6.2007, 09:57 |
ОК, спасиб, попробую с этим поковыряться |
| Автор: nitr 26.6.2007, 10:13 |
| WERT, ковыртся не надо. В комплекте с модулем есть примеры - ОЧЕНЬ много |
| Автор: TTT 26.6.2007, 12:38 | ||
| Поделюсь сабом. С использованием OLE:
Пример вызова my $excel = ParseExcel("$open_dir.$file_name"); строка 22 ($sheet->Columns("A:$MaxCol")->{NumberFormat} = "VT_EMPTY";) нужна для правильного чтения ячейки в формате даты (подбирал параметр методом тыка). Поначалу использовал модуль Spreadsheet::ParseExcel, но некоторые файлы он отказывался обрабатывать. Если на виндозной машине все работать будет, лучше через OLE однозначно. Надеюсь поможет |
| Автор: WERT 27.6.2007, 08:19 |
| Ок, спасибо. Можно считать вопрос исчерпанным. |
| Автор: Nandy 18.10.2007, 10:31 |
| А вот у меня возник такой вопрос: почему значения массива ячеек заносятся в скалярную переменную? $array = $sheet->Range("A1:$last_cell")->{Value}; Как же теперь обращаться к отдельным значениям ячеек? Разве нельзя значения массива ячеек занести в массив, типа @array = $sheet->Range("A1:$last_cell")->{Value}; чтобы потом по отдельности обращаться? Подскажите, пожалуйста. |
| Автор: nitr 18.10.2007, 14:37 |
| Nandy, вы в курсе - "что есть и будет ссылки" $array->[0] - первое знач. в массиве |