Страницы: 1
RSS
Научить excel открывать utf8 по умолчанию, не меняя кодировки файла, без дополнительных действий
 
Добрый день, просьба не закидывать тряпками, я честно гуглил в течение двух дней.
Есть файл csv в кодировке utf-8, на некоторых компьютерах Excel даблкликом открывает его сразу отлично, а на моём, например, я вижу кракозябры "ениваР". То есть мой эксель почему-то применяет кодировку 1251, а у некоторых коллег всё ок на этом же файле, с тем же 2007 офисом.
Особенность эта давно, и я обычно не обращал внимания: данные-получить внешние данные-из текста-кодировка UTF-8, - и работаю дальше.
Теперь столкнулся с тем, что в источнике, из которого формируются csvшки, в некоторых ячейках есть символ переноса строки, и если я использую импорт текста(из csvв эксель), то строка переносится там, где мне не надо, при даблклике же парсер съедает этот перенос строки, но не та кодировка.
Помогает Notepad++ Encoding-Convert to ANSI, но это тоже неудобно.
Изменить формат выгрузки csv не в моей компетенции.
Найти место, где меняется кодировка открытия файла по умолчанию в экселе, я не смог.
Просьба помочь в решении проблемы, заранее благодарю.
 
Excel не научить
Можно написать простенький макрос для перекодирования файла
Открыли файл, увидели если кракозябры, - нажали кнопку, и макрос закрыл файл, перекодировал, и открыл снова

Основу для макроса тут можно найти
http://excelvba.ru/code/savetexttofile
http://excelvba.ru/code/Encode
Код
Function ChangeFileCharset(ByVal filename$, ByVal DestCharset$, _
                           Optional ByVal SourceCharset$) As Boolean
    ' функция перекодировки (смены кодировки) текстового файла
    ' В качестве параметров функция получает путь filename$ к текстовому файлу,
    ' и название кодировки DestCharset$ (в которую будет переведён файл)
    ' Функция возвращает TRUE, если перекодировка прошла успешно
    On Error Resume Next: Err.Clear
    With CreateObject("ADODB.Stream")
        .Type = 2
        If Len(SourceCharset$) Then .Charset = SourceCharset$    ' указываем исходную кодировку
        .Open
        .LoadFromFile filename$    ' загружаем данные из файла
        FileContent$ = .ReadText   ' считываем текст файла в переменную FileContent$
        .Close
        .Charset = DestCharset$    ' назначаем новую кодировку
        .Open
        .WriteText FileContent$
        .SaveToFile filename$, 2   ' сохраняем файл уже в новой кодировке
        .Close
    End With
    ChangeFileCharset = Err = 0
End Function

PS: как вариант, пользуйтесь бесплатным офисным пакетом OpenOffice, - он понимает CSV в кодировке UTF-8
 
Цитата
Игорь написал: Excel не научить
Ну, вот в соседнем кабинете сидит 2 человека, и у одного из них научен, а у другого тоже нет. Так что смею делать вывод, что всё же как-то можно.

За макрос спасибо, но таким же образом можно и в блокноте менять кодировку, небольшая разница.
К опенофису стойкая неприязнь, возможно незаслуженная, но всё же.
 
Я про макрос не знал, а использовал Notepad++ для перекодировки в файле (открываешь руками, нажимаешь перекодировку, сохраняешь). Если раз в месяц этим заниматься, то нормально. А вот если чаще, то беда...надо видимо макросом.
 
Проблема решилась накатыванием патча. На билде 12.0.4518.1014 не работало, на 12.0.6611.1000 все ок стало.
Страницы: 1
Читают тему (гостей: 1)
Наверх