Автор Тема: доступ к xls-файлам  (Прочитано 4143 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн m_yashkov

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
доступ к xls-файлам
« : 25 Мая 2002, 17:19:07 »
Возможно проблема уже обсуждалась, не знаю.

Так вот - нужно организовать доступ из PHP-скрипта к xls-файлу (под юниксом). Я просмотрел в сети на эту тему все, что можно. Вариантов немного: во-первых, есть скрипт на Perl, но он применим только для относительно простых xls-файлов (а прайс-листы в формате xls  очень часто имеют сложную структуру), к тому же говорят, что этот скрипт часто глючит, да и Perl я знаю гораздо хуже, чем PHP.
На PHP я ничего подобного не нашел (есть несколько примеров, но они для виндоуз). Второй вариант - создать ODBC - источник данных и работать с xls-файлом как с базой данных. Про этот вариант более подробной инфы я практически не нашел (честно говоря даже не имею представления, как организовать ODBC-источник под юниксом - до этого работал только напрямую с базами данных - MySQL, PostgreSQl).
Может кто-то уже делал что-то подобное?
Заранее благодарю за помощь.

P.S. Обычно, если нужно поместить в базу на сервере инфу из .xls или .mdb-файла, я обрабатываю их на стороне клиента с помощью ActiveX-элементов, а потом в виде текстовых файлов отправляю на сервер. А там уже с ними работает PHP.
Но тут заказчик попался упертый - требует, чтобы вся обработка шла на сервере...


Оффлайн m_yashkov

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
а вариант с ODBC
« Ответ #2 : 25 Мая 2002, 18:02:21 »
Я просмотрел линки, спасибо. Все в общем т.с. - на PHP непосредственно для работы с .xls класса нет, а в Perl лезть не очень хочется... Тем более, как я понял, там скрипт (на www-106.ibm.com) для чтения файла работает только под windows.
А вот хотелось бы подробнее - как работать с ODBC под юниксом? Что для этого должно быть установлено в системе?

Оффлайн Oak

  • Дерево
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1481
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
доступ к xls-файлам
« Ответ #3 : 26 Мая 2002, 02:21:04 »
Зато непосредственно в PHP есть fgetcsv()
Которая читает строку CSV файла и правильно разбирает в массив.
А этот файл по SaveAs из Excel получается...

Уж сохранить так любой...... клиент сможет. Хотя возможно это тоже только для простых файлов.
[основной броузер - SeaMonkey] Netscape Communicator 4 - is the best :) // see sources

Оффлайн m_yashkov

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
доступ к xls-файлам
« Ответ #4 : 26 Мая 2002, 13:14:38 »
Весь прикол в том, что по техзаданию нужно ежедневно скачивать несколько прайс-листов в формате xls с разных серверов (причем без какого-либо участия оператора, так что никто не будет сохранять их в CSV). А потом эти прайсы должны определенным образом обрабатываться и скидываться в общую базу данных. Скачивание прайсов - относительно простая задача, а вот дальше...
Скорее всего, все-таки придется сделать прогу на стороне клиента (на VB), которая будет ежедневно скачивать прайсы с сервера, переводить их в CSV (или во что-нибудь более интеллектуальное) и уже в таком виде передавать их PHP-скрипту. Хотя не знаю, согласится ли заказчик с таким решением.
А все-таки, можно ли работать на юниксе с ODBC?
/У заказчика свой личный сервак, так что он может поставить туда любое ПО/

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
доступ к xls-файлам
« Ответ #5 : 26 Мая 2002, 23:06:00 »
m_yashkov
по идеи (практически не пробовал), можно.
но однозначно под windows.
Т.е. управлять из php excel\'ом и автоматически конвертировать xls в тот формат, который требуется.
или записывать (если открыт доступ) сразу в mysql базу данных, которая стоит на юниксе.
с уважением,
магистр белой магии.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28