Помощник
|
1C, Excel, php |
pomp
|
Сообщение
#1
|
||
|
|
||
|
|||
ElektrinO |
10.1.2009, 9:54;
Ответить: ElektrinO
Сообщение
#2
|
|
Чтение Excel-файлов средствами PHP
Если вам необходимо читать файлы Excel (.xls) средствами PHP, то библиотека PHP-ExcelReader создана специально для вас. Для работы необходима поддержка iconv или mbstring. Вот пример того, как можно оформить вывод xls-документа в HTML-таблицу с использованием этой библиотеки: [PHP]<?php require_once ('Excel/reader.php'); $data = new Spreadsheet_Excel_Reader(); $data->setOutputEncoding('CP1251'); $data->read('filename.xls'); echo '<table>'; for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) { echo '<tr>'; for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) { echo '<td>'.$data->sheets[0]['cells'][$i][$j].'</td>'; } echo '</tr>'; } echo '</table>'; ?>[/PHP] Альтернативный вариант - PHP Excel PARSER. Вот что написано в файле Help_rus.txt: Вам нужен скрипт, который может читать [B][COLOR="#ff0000"]MS файлы Excel[/COLOR][/B] и сохранять данные в базе данных, HTML страницах и и т.д.? Вы хотите делать это используя [B]PHP [/B]под[B] Unix[/B] и [B]Linux[/B], но без того, чтобы использовать инструментальные средства Windows напоподобии COM? Тогда [B][COLOR="#ff0000"]PHP Excel PARSER[/COLOR][/B] - для вас. Все, в чем вы будете нуждаться - это только наш [B][COLOR="#ff0000"]excel.php[/COLOR][/B] и [COLOR="#ff0000"][B]PHP [/B][/COLOR]сервер без установки дополнительных инструментальных средств. В файле документации Help_rus.txt довольно подробно описано, как использовать PHP Excel PARSER. Кроме того, дистрибутив содержит примеры работы с Excel-файлом: PHP Excel Parser/Setup/SAMPLE/XLS2HTML/SAMPLE.PHP - вывод Excel-файла в браузер PHP Excel Parser/Setup/SAMPLE/xls2mysql/INDEX.PHP - запись Excel-файла в базу данных Пример вывода Excel-файла в браузер в формате HTML: [PHP]<?php include ("excel.php"); $exc = new ExcelFileParser ("log.txt", ABC_NO_LOG); $res = $exc->ParseFromFile("test.xls"); switch ($res) { case 0: break; case 1: die ("Невозможно открыть файл"); case 2: die ("Файл, слишком маленький чтобы быть файлом Excel"); case 3: die ("Ошибка чтения заголовка файла"); case 4: die ("Ошибка чтения файла"); case 5: die ("Это - не файл Excel или файл, сохраненный в Excel < 5.0"); case 6: die ("Битый файл"); case 7: die ("В файле не найдены данные Excel"); case 8: die ("Неподдерживаемая версия файла"); default: die ("Неизвестная ошибка"); } // цикл по рабочим листам for( $ws_num=0; $ws_num<count($exc->worksheet['name']); $ws_num++ ) { echo "<h3>Рабочий лист: "; if( $exc->worksheet['unicode'][$ws_num] ) { echo uc2cp1251($exc->worksheet['name'][$ws_num]); } else echo $exc->worksheet['name'][$ws_num]; echo "</h3>\n"; $ws = $exc->worksheet['data'][$ws_num]; // если рабочий лист не пустой if ( is_array($ws) && isset($ws['max_row']) && isset($ws['max_col']) ) { echo "<table border=1 cellspacing=0 cellpadding=2>\n"; echo "<tr><td> </td>\n"; for( $j=0; $j<=$ws['max_col']; $j++ ) { echo "<td class=index> "; if( $j>25 ) echo chr((int)($j/26)+64); echo chr(($j % 26) + 65)." </td>"; } // начало цикла по строкам for( $i=0; $i<=$ws['max_row']; $i++ ) { echo "<tr><td class=index>".($i+1)."</td>\n"; // начало цикла по столбцам if( isset($ws['cell'][$i]) && is_array($ws['cell'][$i]) ) { for( $j=0; $j<=$ws['max_col']; $j++ ) { if( isset($ws['cell'][$i][$j]) ) { // Печать данных ячейки echo "<td>"; $data = $ws['cell'][$i][$j]; switch ($data['type']) { // строка case 0: $ind = $data['data']; if( $exc->sst['unicode'][$ind] ) $s = uc2cp1251($exc->sst['data'][$ind]); else $s = $exc->sst['data'][$ind]; if( strlen(trim($s))==0 ) echo " "; else echo $s; break; //целое число case 1: echo (int)($data['data']); break; //вещественное число case 2: echo (float)($data['data']); break; // дата case 3: $ret = $exc->getDateArray($data['data']); printf ("%s-%s-%s",$ret['day'], $ret['month'], $ret['year']); break; default: echo " "; break; } echo "</td>\n"; } else { echo "<td> </td>\n"; } } } else { // все ячейки стрки пустые for( $j=0; $j<=$ws['max_col']; $j++ ) { echo "<td> </td>\n"; } } echo "</tr>\n"; } echo "</table>\n"; } else { // пустой рабочий лист echo "<p>Пустой рабочий лист</p>\n"; } } // конвертим в нужную кодировку function uc2cp1251($str) { return iconv('UNICODELITTLE','cp1251',$str); } ?>[/PHP] |
|
|
ElektrinO |
10.1.2009, 10:06;
Ответить: ElektrinO
Сообщение
#3
|
|
Если хотите сами прочитайте ссылки по теме:
|
|
|
pomp
|
Сообщение
#4
|
|
ElektrinO, Содрал с первой ссылки в гугле)))) ай, яй, яй :hihi:
Насколько я знаю, в этой библиотеки проблемы с криилицей. Ладно, пойдем другим путем. Не столь важно что бы это был Excel (.xls) файл. Там не так много строк, это не прайс. 5 строк, 3 ячейки. Просто хочеться делать все автономно. Может делать формировать отчет в текстовый файл или XML? Может у кого-то есть мысли по этому поводу? Записывать в БД или сразу выводить в документ? Как быть с разделением строк? Сколько не гуглил - 100% решения не нашел :( |
|
|
Webmaster_hb |
12.1.2009, 2:40;
Ответить: Webmaster_hb
Сообщение
#5
|
|
pomp, так а в чем проблема? в 1С можно сделать экспорт в текстовый файл с разделителями
ну а импорт или отображение сразу в браузер их текстового файла не проблема... да и в чем проблема вообще смотреть этот файл напрямую в браузере ? |
|
|
pomp
|
Сообщение
#6
|
|
Да то я расказал оболочку. Далее еще нужно делать выборку, сортировку по датам. График строить.... Я то вообщем уже разобрался с этой библиотекой. Нашел такой метод:
[PHP] <?php require_once ('Excel/reader.php'); $data = new Spreadsheet_Excel_Reader(); $data->setOutputEncoding('CP1251'); $data->read('test.xls'); echo '<table>'; for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) { echo '<tr>'; for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) { echo '<td>'.$data->sheets[0]['cells'][$i][$j].'</td>'; } echo '</tr>'; } echo '</table>'; ?> [/PHP] Теперь возникает вопрос. Как лучше организовывать вывод документа? Задать имя одному - это понятно. А вот то вынимать из папки последний по дате формата XXXXYYZZ.xls? Массивчик что ли делать. |
|
|
Sunshine_hb |
28.10.2009, 15:27;
Ответить: Sunshine_hb
Сообщение
#7
|
|
Vobshem niznaju na kakom dvizhke ty eto delaesh, no ja naprimer dlja Joomla sdelal komponent kotorij zagruzhaet xml v sql. pered etim sdelal plagin v 1c kotorij konvertiruet vsjo v xml. Nu a na Front End chaste otobrazhaetsja sql
В общем не знаю на каком движке ты это делаешь, но я, например, для Joomla сделал компонент, который загружает xml в SQL. Перед этим сделал плагин в 1С, который конвертирует все в xml. Ну а на Front End части отображается SQL. Licoric. |
|
|
Witu |
28.10.2009, 18:54;
Ответить: Witu
Сообщение
#8
|
|
|
pomp, чем поще тем лучше
чтение экселя явно худший вариант через включение txt файла будет самое простое еслиб еще глянуть на файл формируемый 1С
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое | 5 | CULA | 3416 | 19.12.2023, 18:55 автор: CULA |
|
Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery Разработка сайтов и сервисов под-ключ |
0 | alexey | 1243 | 24.11.2023, 14:46 автор: alexey |
|
Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP) | 56 | qpPeW | 44918 | 19.7.2023, 10:03 автор: qpPeW |
|
Есть спецы по php/laravel? | 3 | Mixatraider | 1890 | 26.5.2023, 20:48 автор: Mixatraider |
|
Опытный PHP\Python разработчик в поиске интересных задач | 6 | daikzlex | 3403 | 25.5.2023, 13:55 автор: daikzlex |
Текстовая версия | Сейчас: 23.4.2024, 21:49 |