Технологии

PHPExcel - вопрос №749283

При открытии страниции выходят всякие иероглифы, но никак не создает файл эксель, а если изменить строку  Excel5 на Excel2007 то просто белый экран, вот тут файлы index-function.

сентябрь 8, 2013 г.

  • Всего ответов: 1

  • Вилия - аватарка

    Вилия

    14-й в

    Для того чтобы в Excel корректно отображался текст в формате Unicode(UTF-8), воспользуемся возможностями другого текстового редактора, например Notepad++
    Допустим изначально мы имеем нечитаемый файл с расширением .csv (или файл формата: .xls, неважно). В Excel, его содержимое выглядит примерно так:

    Excel encoding to UTF-8

     

    Excel отображает содержимое некорректно
    Из рисунка видно, что кириллица закодированная в UTF-8 превратилась в абракадабру. Но дело, как Вы увидите дальше, не только в Excel, который всё-таки понимает UTF-8. Но понимает, по-своему, узкоформатно. Итак, начнем.

     

    Алгоритм перекодировки в UTF-8 ( Excel 2007, Excel 93-2004):

     

    1. Открываем в Notepad++ наш документ:

     

    Notepad_encoding_UTF-8_foto

    Notepad++ отображает содержимое корректно
    Как видим, Notepad++ декодирует формат UTF-8 правильно. Смотрим в правый нижний угол редактора. В углу отображается текущая кодировка: ANSI as UTF-8.
    Именно эта кодировка «ANSI as UTF-8″ и не распознается программой Эксель. Чтобы кодировка распознавалась, нам нужем вариант UTF-8 в чистом виде.

     

    Notepad++ encoding ANSI as UTF-8

    текущая кодировка ANSI as UTF-8

    2. В программе Notepad++ заходим в меню Encoding (в русскоязычной версии текстового редактора слово «Encoding» заменено словом «Кодировка», хотя могу ошибаться) и конвертируем файл в UTF-8:

    Обратите внимание что после конвертации на экране ни один символ не изменился. Изменилась только текущая кодировка, указанная в правом нижнем углу. Все изменения скрыты от глаз. Теперь наш файл благополучно закодирован в UTF-8.

     

    Notepad++ конвертация в UTF-8

    конвертация в UTF-8
    3. Следующий шаг — выбор набора символов. Если вы пишите на русском, то выбираете кириллицу и windows-1251. Снова открываем меню Encoding и далее > Character sets > Cyrillic > Windows-1251:
    Если Вы пишете на японском, арабском или, например, греческом, то выбираете соответствующий набор символов.

     

    Notepad++ encode in Cyrillic Windows-1251

    Конвертация в Cyrillic Windows-1251

    Если после выбора набора символов появилось диалоговое окно с предложением сохранить файл и предупреждением что изменения необратимы, жмём «Yes».

    Может появится еще одно диалоговое окно, если обрабатываемый файл открыт в Excel или в другой программе. Если это окно появилось, нажимаем «Yes» в Notepad++, закрываем наш файл в другой программе. После чего возвращаемся в текстовый редактор и повторяем шаг 3.

     

    Notepad++ dialog box foto

    Предупреждение
    И опять, заметьте, после установки нового набора символов ни один символ на экране «не дрогнул».
    4. А теперь повторяем шаг 2. Снова кодируем наш набор символов в UTF-8. И снова никаких изменений на экране. Всё символы должны читаться.

     

    Excel correct encoding UTF-8 foto

    Теперь Excel отображает файл в кодировке UTF-8 корректно
    5. Теперь сохраняем получившийся файл не меняя его расширения. Вот и всё. Можете открывать Ваш файл в Excel и пользоваться. Если Вы всё сделали правильно, то он должен отображаться корректно.
    Как видите Excel понимает UTF-8, но только в чистом виде. Пока продолжаются войны форматов, нам потребителям ничего другого не остается, как научиться подчинять себе необходимые из форматов.

    ноябрь 7, 2016 г.

Похожие вопросы