Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: PHP+Excel+MySQL
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » PHP+Excel+MySQL

Страниц (1): [1]
 

1. mark2009 - 14 Сентября, 2009 - 16:02:38 - перейти к сообщению
В общем описываю ситуацию..

Есть файл Excel - прайс лист. Структура файла всегда одинаковая. Требуется содержимое файла загнать в таблицу MySQL.
Пробовал сам файл сохранять в CSV, но то что я вижу в мускуле после импорта файла в phpmyadmin - явно не то Улыбка

Есть какой-то вариант через php поработать именно с XLS? Надо всего-то -

1) Открыть файл
2) Циклом прочитать содержимое и в этом же цикле формировать текст запроса

Подскажите, как лучше это сделать плиз )
2. EuGen - 14 Сентября, 2009 - 16:21:02 - перейти к сообщению
file()
+
explode()
+
sql
3. mark2009 - 14 Сентября, 2009 - 16:41:35 - перейти к сообщению
EuGen пишет:
file()
+
explode()
+
sql


explode() на что? там просто текст в ячейках. Какой тогда разделитель использовать?

И вообще в результате выполнения вот такого кода:

PHP:
скопировать код в буфер обмена
  1.  
  2. $file = file("file.xls");
  3. echo $file;
  4.  


ничего не происходит. И это понятно - как, например, прочитать определённый лист в книге? Вполне логичен следующий результат:

PHP:
скопировать код в буфер обмена
  1.  
  2. $file = file("file.xls");
  3. echo $file;
  4. echo gettype($file);
  5.  


Результат - boolean.
4. Ch_chov - 14 Сентября, 2009 - 18:57:35 - перейти к сообщению
Цитата:
то что я вижу в мускуле после импорта файла в phpmyadmin - явно не то

Ищи проблему тут, phpmyadmin вполне корректно делает импорт из csv файлов. Попробуй обновить pma.

Цитата:
explode() на что? там просто текст в ячейках.

php не умеет работать с ячейками.



З.Ы. Для работы с csv файлами есть функция fgetcsv.
5. mark2009 - 14 Сентября, 2009 - 19:10:37 - перейти к сообщению
Ch_chov
У меня pma последней версии. Но всё дело в том, что я это делаю не для себя, а для заказчика. Ему будут поступать новые файлы и он уж точно не будет заморачиваться со всеми SQL запросами Улыбка т.е. требуется какое-то универсальное решение.
6. Ch_chov - 14 Сентября, 2009 - 19:36:38 - перейти к сообщению
Цитата:
требуется какое-то универсальное решение

Их полно. Ищи и пробуй.



http://www.php.su/articles/?cat=...les&page=045
7. mark2009 - 14 Сентября, 2009 - 20:29:20 - перейти к сообщению
Ch_chov
Спасибо за содержательную помощь Ха-ха
8. samulet - 19 Июля, 2011 - 23:27:13 - перейти к сообщению
Помогите, пож с алгоритмом импорта данных в php.
Нужно загрузить не сразу в базу, а посредством проверок данных на их тип, соответсвие определенным условиям.

Существую какие-л. современные средства автоматизации процедуры?

Спасибо, заранее всем!
9. evgenijj - 19 Июля, 2011 - 23:45:29 - перейти к сообщению
Сохранить таблицу MS Excel в формате CSV. Разделитель столбцов ; (точка с запятой), разделитель строк \n.
Цитата:
Столбцы разделяются точкой с запятой, а строки — знаком возврата каретки. Если ячейка содержит точку с запятой, ее содержимое берется в кавычки. Если ячейка содержит кавычку, кавычка удваивается.

Загрузка в таблицу из файла CSV
CODE (text):
скопировать код в буфер обмена
  1. LOAD DATA INFILE '/home/someuser/data.csv' INTO TABLE table_name
  2. FIELDS TERMINATED BY ';' ENCLOSED BY '"'
  3. LINES TERMINATED BY '\n';


Сохранение данных из таблицы в файл
CODE (text):
скопировать код в буфер обмена
  1. SELECT filed1, field2, field3 INTO OUTFILE '/home/someuser/data.csv'
  2. FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"'
  3. LINES TERMINATED BY '\n'
  4. FROM table_name;


Можно прочитать xls-файл средствами PHP и после проверки вставить запись в таблицу MySQL:
Чтение Excel-файлов средствами PHP
10. samulet - 20 Июля, 2011 - 07:27:24 - перейти к сообщению
Спасибо, evgenijj!

Вариант с CSV файлом вряд ли подойдет в моем случае - пользователи кнопки пока нажимать учатся и любят систему за то, что она не сложней однокоассников ))
Попробую составить алгоритм и обкатать на CSV.

Алгоритм планирую следующий:
1. Загружаю все данные из файла во временную таблицу базы данных (нужно будет только с заголовками и форматами разобраться..);
2. Выбираю из временной таблицы нужную инфу;
3. Проверяю данные;
4. При возникновении несоответствия вывожу информацию и правильные варианты из живой базы;
5. Меняю неправильную инфу во временной таблице не правильную, скорректированую пользователем;
6. Пункты 3, 4, 5, пока все не будет ОК;
7. Сохраняю данные из временной таблицы в рабочую.

Так?
11. samulet - 24 Июля, 2011 - 20:30:33 - перейти к сообщению
Не работает библиотека phpExcelReader
Подскажите, пожалуйста,что делаю не так!!!

Ошибка следующая:
The filename jxlrwtest.xls is not readable
Происходит, как я понимаю, здесь:

PHP:
скопировать код в буфер обмена
  1. // Читаем файл
  2.   $data = new Spreadsheet_Excel_Reader();
  3.   $data->setOutputEncoding('CP1251');
  4.   $data->read('jxlrwtest.xls');


Кстати, файл 'jxlrwtest.xls', который лежит в примерах - не открывается в Excell. Пробовал другие файлы - результат тот же.
Фраза "is not readable" из самой библиотеки, но в чем проблема, не пойму.

Спасибо.
12. Мелкий - 24 Июля, 2011 - 20:35:01 - перейти к сообщению
Права проверьте, может ли php читать данный файл. В частности, is_readable
13. samulet - 24 Июля, 2011 - 21:30:01 - перейти к сообщению
Спасибо, Мелкий!!!
Идейку правильную подкинул ;)
На Денвере не пашет - позже буду разбираться почему, на серваке работает (там же не винда ))
Разгребаю другую кучу ошибок!!

 

Powered by ExBB FM 1.0 RC1