GRIG
Новичок
PHP, сгенеренный экселевый файл и разные версии экселя
Народ! Помогите, кто чем может! Скорее всего, я сюда обратился не совсем по адресу. Но что-то я не придумал, куда надо с таким делом обращаться.
Проблема такая. Есть веб-сервер, который работает с базой данных. Все страницы, используемые на сервере, написаны на PHP. При некоторых условиях по команде от пользователя сервер должен взять существующий XLS-файл ("заготовку"), заполнить его данными из базы и отдать пользователю. Для того, чтобы это сделать, используется пакет PHPExcel и его класс PHPExcel_Writer_Excel5.
На стороне сервера все работает великолепно. А вот на стороне клиентов возникают проблемы. Если у клиента стоит ОпенОфис (не важно виндовый или линуховый - проверял и там, и там), то клиент полученный файл (и его содержимое) великолепно видит. А вот если у клиента стоит родной мелкомягкий офис-2007 - то с полученным файлом возникают проблемы. А именно: ячейки с числами отображаются нормально, а вот ячейки с формулами могут показывать ошибки при вычислении. Но при этом если ткнуть мышой в ячейку с ошибкой, из появившейся менюшки выбрать пункт "исправить формулу", потом ничего не менять и просто ткнуть в "Enter", - то ошибка пропадает, и в этой ячейке появляется цифирь. Причем цифирь не абы какая, а именно такая, какая должна получиться по формуле.
Особую пикантность ситуации добавляет вот какой момент. В файле-заготовке используемая в формуле функция написана латинскими буквами - SUMPRODUCT. При открытии сгенерированного файла в русифицированном мелкомягком экселе в соответствующей ячейке написано русскими буквами СУММПРОИЗВ. Т.е. эксель правильно опознает использованную в формуле функцию, переводит ее название на русский, но по каким-то причинам не хочет ее вычислять. И в то же время с функцией SUM/СУММ все работает нормально.
При попытке использовать при генерации экселевого файла класс PHPExcel_Writer_Excel2007 результат неудовлетворительный - ОпенОфис не может прочитать получившийся файл. А мне нужно универсальное решение.
Если кто знает, как с этим бороться, подскажите, пожалуйста.
Или хотя бы пошлите в правильную сторону.
Заранее спасибо.
Народ! Помогите, кто чем может! Скорее всего, я сюда обратился не совсем по адресу. Но что-то я не придумал, куда надо с таким делом обращаться.
Проблема такая. Есть веб-сервер, который работает с базой данных. Все страницы, используемые на сервере, написаны на PHP. При некоторых условиях по команде от пользователя сервер должен взять существующий XLS-файл ("заготовку"), заполнить его данными из базы и отдать пользователю. Для того, чтобы это сделать, используется пакет PHPExcel и его класс PHPExcel_Writer_Excel5.
На стороне сервера все работает великолепно. А вот на стороне клиентов возникают проблемы. Если у клиента стоит ОпенОфис (не важно виндовый или линуховый - проверял и там, и там), то клиент полученный файл (и его содержимое) великолепно видит. А вот если у клиента стоит родной мелкомягкий офис-2007 - то с полученным файлом возникают проблемы. А именно: ячейки с числами отображаются нормально, а вот ячейки с формулами могут показывать ошибки при вычислении. Но при этом если ткнуть мышой в ячейку с ошибкой, из появившейся менюшки выбрать пункт "исправить формулу", потом ничего не менять и просто ткнуть в "Enter", - то ошибка пропадает, и в этой ячейке появляется цифирь. Причем цифирь не абы какая, а именно такая, какая должна получиться по формуле.
Особую пикантность ситуации добавляет вот какой момент. В файле-заготовке используемая в формуле функция написана латинскими буквами - SUMPRODUCT. При открытии сгенерированного файла в русифицированном мелкомягком экселе в соответствующей ячейке написано русскими буквами СУММПРОИЗВ. Т.е. эксель правильно опознает использованную в формуле функцию, переводит ее название на русский, но по каким-то причинам не хочет ее вычислять. И в то же время с функцией SUM/СУММ все работает нормально.
При попытке использовать при генерации экселевого файла класс PHPExcel_Writer_Excel2007 результат неудовлетворительный - ОпенОфис не может прочитать получившийся файл. А мне нужно универсальное решение.
Если кто знает, как с этим бороться, подскажите, пожалуйста.
Или хотя бы пошлите в правильную сторону.
Заранее спасибо.