PDA

Просмотр полной версии : Excel и .cvs: кириллица заменяется на цепочки вопросительных знаков.


automatix
06.10.2006, 05:26
Доброго времени суток!

Вопрос не по PHP, но я решил запостить его здесь, так как вероятно, что кто-то уже спотыкался об этот камень, решая задачи, подобные той, что сейчас пытаюсь решить я.

Итак. Есть экселевский документ, который надо перевести в объект/массив/SQL. Для этого сохраняю его в формате .cvs, чтобы впоследствии прочесть с помощью fgetcvs. При сохранении эксель выдает мне следующее сообщение: см. атач.

Нечто подобное происходит при сохранении .txt-документа с русскими буквами. Но тогда нужно только нажать "Отмена" и сохранить файл в Юникоде. Тут этот номер не проходит -- сохранить можно только нажав "Да". В противном случае все символы кириллицы превращаются в вопросительные знаки.

Идеи?

Спасибо.

Skubent
06.10.2006, 12:38
Нечто подобное происходит всегда, поскольку csv файлы не могут содержать листов, макросов и - о ужас - не могут содержать информацию о шрифтах.
Подсказка 1. эксель умеет сохранять файлы в различной кодировке.

Подсказка 2. xls файлы прекрасно могут быть обработаны несколько большим количеством методов. К примеру, покопать в сторону DOM (для работы с экселем через его собственный интерфейс) или XML (как наиболее универсальный метод обмена данными между приложениями).

Подсказка 3. Обратить на форум где-нибудь на tetki.net, тоже не по теме будет, но вдруг кто поможет ?

automatix
06.10.2006, 14:35
На две трети информативно. Благодарю. ))

automatix
06.10.2006, 15:12
Подсказка 1. эксель умеет сохранять файлы в различной кодировке.

Не могу найти...

Подсказка 2. xls файлы прекрасно могут быть обработаны несколько большим количеством методов. К примеру, покопать в сторону DOM (для работы с экселем через его собственный интерфейс)...

Покопал. Но не понял, причем здесь это и как с помощью ДОМ-функций читать таблицы экселя.

Skubent
06.10.2006, 16:07
1. Ну, тут я только если промолчу. Бери эксель поновее, опен-офис, наконец.

2. Сохранить как XML (HTML) и читать.

automatix
06.10.2006, 16:10
Вот может, кому пригодится:

PHP Excel Parser Pro (http://www.excelparser.com/) -- очень хороший софт, покрайней мере в демке...
Стоит правда 80 баксов...

Spreadsheet_Excel_Reader (http://pear.php.net/pepr/pepr-proposal-show.php?id=304) (доунлоад через "Package documentation") -- преобразует таблицу в объект/двухмерный массив. Очень простая штука, почти ничего, кроме работы с простой таблицей без объединенных ячеек и прочего, насколько я понял, не умеет. Зато дешево (точнее бесплатно) и сердито. ))

automatix
06.10.2006, 16:13
1. Ну, тут я только если промолчу. Бери эксель поновее, опен-офис, наконец.

2. Сохранить как XML (HTML) и читать.

2. Ага, понял. Спасибо.
1. У меня офис 2000. Неужели он не поддерживает возможность сохранять в различных кодировках.

Skubent
06.10.2006, 16:16
1. Не представляю себе, опен-офисом пользуюсь давно. он перед сохранением csv спрашивает кодировку. Эксель тоже должен уметь.

4. Еще можно покопать в сторону OLE, но это если php собран под винду и не уверен, что вообще умеет такими глупостями заниматься.