Как HTML-кодировать или транслитерировать высокие символы в Excel?

В Excel, как я могу преобразовать содержимое ячейки, которая включает символы с акцентом, фигурные кавычки и т. д., либо в HTML для тех же символов, либо в транслитерированную версию открытого текста?

У нас есть документ XLS, который содержит некоторые «высокие» символы. Данные были загружены через соединение с БД, и кажется, что Excel правильно обрабатывает отдельные ячейки (или строки), находящиеся в разных кодовых страницах.

Когда мы экспортируем эти данные в CSV, некоторые старшие символы отображаются неправильно — кажется, что Excel использует единую кодировку для документа (конечно) и битовое значение символов из их исходной кодовой страницы (которая может или не может согласовываться с другими значениями в том же документе).

Поскольку Excel правильно отображает текст перед экспортом, я считаю, что на этом этапе мы должны иметь возможность кодировать старшие символы в их HTML-эквиваленты, а затем экспортировать в CSV, таким образом гарантируя, что CSV будет только ASCII.

(В качестве альтернативы мы могли бы транслитерировать в простой ASCII, но это кажется плохим подходом и, вероятно, не проще...)


person Chris Burgess    schedule 11.08.2011    source источник
comment
свойства предоставленных документов xlsx / xlsm сообщают, что Excel имеет версию 14.0300.   -  person Chris Burgess    schedule 11.08.2011


Ответы (1)


Существует функция от pgc01, которая, кажется, делает свое дело здесь: http://www.mrexcel.com/forum/showpost.php?p=2091183&postcount=7

Надеюсь, я могу процитировать их код:

Function CodeUni(s As String, Optional bHex As Boolean = True)
    If bHex Then
        CodeUni = Right("0000" & Hex(AscW(Left(s, 1))), 4)
    Else
        CodeUni = AscW(Left(s, 1))
    End If
End Function

Если вы не знаете, как добавить это в свою книгу Excel, очень полезно это руководство: http://office.microsoft.com/en-us/excel-help/create-custom-functions-in-excel-2007-HA010218996.aspx

Чтобы обобщить:

  1. Alt+F11 для вызова редактора VBA
  2. Вставить > Модуль
  3. Вставьте приведенный выше код в
  4. Используйте функцию на листе!

Чтобы получить его как правильный объект unicode с кодировкой HTML, я использовал:

="&#"&CodeUni(C1, TRUE)&";"

В моем тестовом примере у меня было ﻼ в C1, а в E1 формула отображается как &#FEFC;

person Rikki    schedule 16.08.2011