![]() |
Сложный вопрос для php-программиста
Всем привет! Кто может подсказать как придумать форму php по которой можно было бы загрузить файл Excel на сервер и чтобы он автоматически перенес две первых колонки в таблице в базу данных сайта? И более сложный вопрос: как сделать чтобы во втором столбце пробелы заменились на новые колонки? То есть предположим это ФИО. И чтобы фамилия, имя и отчество были отдельно.
|
не сталкивался с таким, но тк кк у гугле поискать не судьба, скопипастил пару ссылок
http://code.google.com/p/php-excel/ http://www.codeplex.com/PHPExcel http://www.ibm.com/developerworks/xml/library/os-phpexcel/index.html прост спать иду, посему только ссылки лентяям =\ |
Хорошо, за каждое из решений дам по 5 плюсов, если ответ будет рабочим и максимально подробным.
|
Глянь тут:
http://ishodniki.ru/list/info.php?cat=13&id=6482&show=php-develop |
Готового решения нет, надо писать все этом самому под эту задацу
|
http://group315.clan.su/load/2-1-0-1
Парсер xls в mySQL выгружает. Подробная инструкция в архиве. |
А ты сохраняй не в XLS, а в CSV, и его сможешь парсить обычными методами.
|
Вопрос
Цитата:
|
Цитата:
|
Вопрос
Цитата:
|
А как такой вариант решения первого вопроса: <?php
$file = $_POST['file']; $csv_lines = file("book1.csv"); if(is_array($csv_lines)) { //разбор csv $cnt = count($csv_lines); for($i = 0; $i < $cnt; $i++) { $line = $csv_lines[$i]; $line = trim($line); //указатель на то, что через цикл проходит первый символ столбца $first_char = true; //номер столбца $col_num = 0; $length = strlen($line); for($b = 0; $b < $length; $b++) { //переменная $skip_char определяет обрабатывать ли данный символ if($skip_char != true) { //определяет обрабатывать/не обрабатывать строку ///print $line[$b]; $process = true; //определяем маркер окончания столбца по первому символу if($first_char == true) { if($line[$b] == '"') { $terminator = '";'; $process = false; } else $terminator = ';'; $first_char = false; } //просматриваем парные кавычки, опредляем их природу if($line[$b] == '"') { $next_char = $line[$b + 1]; //удвоенные кавычки if($next_char == '"') $skip_char = true; //маркер конца столбца elseif($next_char == ';') { if($terminator == '";') { $first_char = true; $process = false; $skip_char = true; } } } //определяем природу точки с запятой if($process == true) { if($line[$b] == ';') { if($terminator == ';') { $first_char = true; $process = false; } } } if($process == true) $column .= $line[$b]; if($b == ($length - 1)) { $first_char = true; } if($first_char == true) { $values[$i][$col_num] = $column; $column = ''; $col_num++; } } else $skip_char = false; } } } var_dump($values); ?> |
Так никто не возьмется?
|
dk-ne, опиши подробнее.
из того что ты написал я понял след.: исходные данные хранятся в файле xls. В таблице две колонки: первая с какими-то данными, вторая содержит ФИО, разделенные пробелами. Нужно: 1. сделать форму, через которую этот самый файл .xls загружается на сервер 2. распарсить данные из файла: 1-й столбец добавить в 1-й столбец в базе данных, а 2-й разбить на три столбца (фамилия имя отчество) и также тремя столбцами занести в базу данных. т.е. было в файле |Данные|ФИО|, а стало в базе данных так |Данные|Фамилия|Имя|Отчеств о| если так то держи |
Цитата:
|
dk-ne, я делал так, экспортировал из Excel в CSV формат, кидал на хост в папку и парсером выводил на сайте.
PHP код:
Код HTML:
.td1{background-color:#f0ece8;} |
Цитата:
|
dk-ne, если возможно, выложи пример своей таблицы.
|
Цитата:
сам понимаешь, что это не оригинал |
Цитата:
в общем обновил класс, подправил немного сам скрипт, должно работать http://depositfiles.com/files/05yo6vjf8 |
| Время: 06:16 |