Dbf в excel кракозябры

 

Sanya

Пользователь

Сообщений: 20
Регистрация: 01.01.1970

Уважаемый ZVI — вставил в єексель Ваш код:  
Option Explicit  
Declare Function CharToOem Lib «user32» Alias «CharToOemA» (ByVal lpszSrc As String, ByVal lpszDst As String) As Long  

  ‘ ZVI:2009-01-20

http://www.sql.ru/forum/actualthread.aspx?tid=631075  

‘ Перекодировка DBF из Windows-1251 в DOS-866 для работы в Excel  
Sub Dbf_Win2Rus()  
 Dim FN%, s$, ptrData&, b() As Byte, FileName  
 On Error GoTo exit_  
 ‘ Выбрать DBF файл  
 ChDrive Mid(ThisWorkbook.Path, 1, 1)  
 ChDir ThisWorkbook.Path & «»  
 FileName = Application.GetOpenFilename(«DBF File (*.dbf), *.dbf», , _  
           «DBF Win2Dos»)  
 If FileName = False Then Exit Sub  
 ‘ Открыть DBF файл  
 FN = FreeFile  
 Open FileName For Binary Access Read Write As #FN  
 ‘ Считать все в байтовый массив  
 ReDim b(0 To LOF(FN) — 1)  
 Get #FN, , b  
 ‘ Проверить флаг перекодировки для исключения двойной  
 If CInt(b(29)) = 38 Then  
   If MsgBox(«DOS-кодировка уже установлена,» & vbLf _  
            & «Все равно продолжить?», _  
            vbExclamation + vbOKCancel + vbDefaultButton2, _  
            «Не навреди!») <> vbOK Then  
     GoTo exit_  
   End If  
 End If  
 ‘ Установить указатель на начало данных  
 ptrData = b(9) * 256 + b(8) + 1  
 ‘ Считать данные в Unicode  
 s = StrConv(MidB(b, ptrData), vbUnicode)  
 ‘ Перекодировать данные в DOS-866  
 ReDim b(0 To Len(s) — 1)  
 b = StrConv(Win2Dos(s), vbFromUnicode)  
 ‘ Переписать данные в DBF  
 Put #FN, ptrData, b  
 ‘ Установить флаг DOS-866 в DBF  
 Put #FN, 30, 38  
exit_:  
 Close #FN  
 If Err <> 0 Then  
   Debug.Print «Error: » & Err.Number & » — » & Err.Description  
 Else  
   MsgBox «Преобразовано успешно!», vbInformation, «DBF Win2Dos»  
 End If  
End Sub  

  Private Function Win2Dos(ByVal sWin As String) As String  
 Win2Dos = String(Len(sWin), Chr(0))  
 Call CharToOem(sWin, Win2Dos)  
End Function  

    но результат выполнения дает ошибку: прилагаю  

  подскажите в чем проблема. СПАСИБО

Аватара пользователя

uav1606

Advanced Member
Сообщения: 5700
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество



Как заставить Excel 2003 открывать DBF в ANSI-кодировке (1251)

Собственно, вопрос в названии темы — как можно заставить Excel 2003 открывать DBF в ANSI-кодировке (1251)? По умолчанию она открывает файлы в OEM (866). Причём нужно именно «автономное» решение, т.к. человек, которому это нужно, не будет ничего конвертировать, настраивать, использовать другой софт и т.п. Раньше ему приходили файлы с кодировкой OEM, он их открывал Excel’ем, всё было нормально. Теперь кодировку сменили на ANSI, вместо русских букв — кракозябры.
Естественно, можно открыть через какой-нибудь DBF Viewer или ещё что-то, но ему нужно именно через Excel, где я никаких настроек кодировок не нашёл.


Аватара пользователя

uav1606

Advanced Member
Сообщения: 5700
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество



Как заставить Excel 2003 открывать DBF в ANSI-кодировке (1251)

Сообщение

uav1606 » 21.10.2019,14:55

Гм, ну, см. вложение. Хотя, вообще говоря, насколько я вижу, Excel (что 2003, что 2007) все DBF считает с кодировкой OEM (866), так что образец тут и ни к чему… (Поля FIO и NAME_STRIT должны быть на русском.)

Вложения
plat2.zip
(560 байт) 198 скачиваний


marinovsoft

Advanced Member
Сообщения: 487
Зарегистрирован: 02.09.2017,09:08
Откуда: Кемерово
Контактная информация:

Как заставить Excel 2003 открывать DBF в ANSI-кодировке (1251)

Сообщение

marinovsoft » 21.10.2019,15:21

В заголовке файла кодировка правильная указана?


Аватара пользователя

uav1606

Advanced Member
Сообщения: 5700
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество



Как заставить Excel 2003 открывать DBF в ANSI-кодировке (1251)

Сообщение

uav1606 » 21.10.2019,15:31

Да (C9h — Russian Windows).


Аватара пользователя

nimdasys_inbox_ru

Advanced Member
Сообщения: 3457
Зарегистрирован: 05.06.2019,18:58
Откуда: Черкесск

Вклад в сообщество

Как заставить Excel 2003 открывать DBF в ANSI-кодировке (1251)

Сообщение

nimdasys_inbox_ru » 21.10.2019,15:36

uav1606 писал(а): ↑

21.10.2019,14:55


Гм, ну, см. вложение. Хотя, вообще говоря, насколько я вижу, Excel (что 2003, что 2007) все DBF считает с кодировкой OEM (866), так что образец тут и ни к чему… (Поля FIO и NAME_STRIT должны быть на русском.)

Ну да, это такой привет от MS, они думают, что в РФ основная кодировка для DBF — досовская!

Макросы применять для решения вышеобозначенной задачи допустимо ?!


Аватара пользователя

uav1606

Advanced Member
Сообщения: 5700
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество



Как заставить Excel 2003 открывать DBF в ANSI-кодировке (1251)

Сообщение

uav1606 » 21.10.2019,15:43

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


Аватара пользователя

nimdasys_inbox_ru

Advanced Member
Сообщения: 3457
Зарегистрирован: 05.06.2019,18:58
Откуда: Черкесск

Вклад в сообщество

Как заставить Excel 2003 открывать DBF в ANSI-кодировке (1251)

Сообщение

nimdasys_inbox_ru » 21.10.2019,15:45

uav1606 писал(а): ↑

21.10.2019,15:43


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

Вопрос: открытая DBF’ка затем корректируется и результат сохраняется в виде файла .xls ?!


Аватара пользователя

uav1606

Advanced Member
Сообщения: 5700
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество



Как заставить Excel 2003 открывать DBF в ANSI-кодировке (1251)

Сообщение

uav1606 » 21.10.2019,15:46

Нет, просто открывается для визуальной проверки — глянуть фамилию и т.п.


Аватара пользователя

nimdasys_inbox_ru

Advanced Member
Сообщения: 3457
Зарегистрирован: 05.06.2019,18:58
Откуда: Черкесск

Вклад в сообщество

Как заставить Excel 2003 открывать DBF в ANSI-кодировке (1251)

Сообщение

nimdasys_inbox_ru » 21.10.2019,15:52

uav1606 писал(а): ↑

21.10.2019,15:46


Нет, просто открывается для визуальной проверки — глянуть фамилию и т.п.

А, ну тогда могу предложить бесплатное решение DBF Commander Free, он ассоциируется с файликами DBF и от юзверя только требуется кликнуть по нужному ему файлу — всё открывается в красивом виде + можно сохранить во всех мыслимых форматах и кодировках, а также есть экспорт в Excel!


Аватара пользователя

CodeMaster

Advanced Member
Сообщения: 7669
Зарегистрирован: 27.08.2010,11:17
Откуда: Воронеж
Контактная информация:

Вклад в сообщество

Как заставить Excel 2003 открывать DBF в ANSI-кодировке (1251)

Сообщение

CodeMaster » 21.10.2019,15:56

uav1606 писал(а): ↑

21.10.2019,15:46


Нет, просто открывается для визуальной проверки — глянуть фамилию и т.п.

Скрипт, которому за которым закрепляются файлы с расширением .dbf, который отдаёт их конвертеру 866->1251, а результат в Excel 2003?

После эпидемии всегда приходит война…


Содержание

  • Работа с кодировкой текста
    • Способ 1: изменение кодировки с помощью Notepad++
    • Способ 2: применение Мастера текстов
    • Способ 3: сохранение файла в определенной кодировке
  • Вопросы и ответы

Кодировка текста в Microsoft Excel

С потребностью менять кодировку текста часто сталкиваются пользователи, работающие браузерах, текстовых редакторах и процессорах. Тем не менее, и при работе в табличном процессоре Excel такая необходимость тоже может возникнуть, ведь эта программа обрабатывает не только цифры, но и текст. Давайте разберемся, как изменить кодировку в Экселе.

Урок: Кодировка в Microsoft Word

Работа с кодировкой текста

Кодировка текста – эта набор электронных цифровых выражений, которые преобразуются в понятные для пользователя символы. Существует много видов кодировки, у каждого из которых имеются свои правила и язык. Умение программы распознавать конкретный язык и переводить его на понятные для обычного человека знаки (буквы, цифры, другие символы) определяет, сможет ли приложение работать с конкретным текстом или нет. Среди популярных текстовых кодировок следует выделить такие:

  • Windows-1251;
  • KOI-8;
  • ASCII;
  • ANSI;
  • UKS-2;
  • UTF-8 (Юникод).

Последнее наименование является самым распространенным среди кодировок в мире, так как считается своего рода универсальным стандартом.

Чаще всего, программа сама распознаёт кодировку и автоматически переключается на неё, но в отдельных случаях пользователю нужно указать приложению её вид. Только тогда оно сможет корректно работать с кодированными символами.

Некорректные символы в Microsoft Excel

Наибольшее количество проблем с расшифровкой кодировки у программы Excel встречается при попытке открытия файлов CSV или экспорте файлов txt. Часто, вместо обычных букв при открытии этих файлов через Эксель, мы можем наблюдать непонятные символы, так называемые «кракозябры». В этих случаях пользователю нужно совершить определенные манипуляции для того, чтобы программа начала корректно отображать данные. Существует несколько способов решения данной проблемы.

Способ 1: изменение кодировки с помощью Notepad++

К сожалению, полноценного инструмента, который позволял бы быстро изменять кодировку в любом типе текстов у Эксель нет. Поэтому приходится в этих целях использовать многошаговые решения или прибегать к помощи сторонних приложений. Одним из самых надежных способов является использование текстового редактора Notepad++.

  1. Запускаем приложение Notepad++. Кликаем по пункту «Файл». Из открывшегося списка выбираем пункт «Открыть». Как альтернативный вариант, можно набрать на клавиатуре сочетание клавиш Ctrl+O.
  2. Переход к отрытию файла в Notepad++

  3. Запускается окно открытия файла. Переходим в директорию, где расположен документ, который некорректно отобразился в Экселе. Выделяем его и жмем на кнопку «Открыть» в нижней части окна.
  4. Открытие файла в Notepad++

  5. Файл открывается в окне редактора Notepad++. Внизу окна в правой части строки состояния указана текущая кодировка документа. Так как Excel отображает её некорректно, требуется произвести изменения. Набираем комбинацию клавиш Ctrl+A на клавиатуре, чтобы выделить весь текст. Кликаем по пункту меню «Кодировки». В открывшемся списке выбираем пункт «Преобразовать в UTF-8». Это кодировка Юникода и с ней Эксель работает максимально корректно.
  6. Изменение кодировки файла в Notepad++

  7. После этого, чтобы сохранить изменения в файле жмем на кнопку на панели инструментов в виде дискеты. Закрываем Notepad++, нажав на кнопку в виде белого крестика в красном квадрате в верхнем правом углу окна.
  8. Сохранение файла в Notepad++

  9. Открываем файл стандартным способом через проводник или с помощью любого другого варианта в программе Excel. Как видим, все символы теперь отображаются корректно.

Корректное отображение символов в Microsoft Excel

Несмотря на то, что данный способ основан на использовании стороннего программного обеспечения, он является одним из самых простых вариантов для перекодировки содержимого файлов под Эксель.

Lumpics.ru

Способ 2: применение Мастера текстов

Кроме того, совершить преобразование можно и с помощью встроенных инструментов программы, а именно Мастера текстов. Как ни странно, использование данного инструмента несколько сложнее, чем применение сторонней программы, описанной в предыдущем методе.

  1. Запускаем программу Excel. Нужно активировать именно само приложение, а не открыть с его помощью документ. То есть, перед вами должен предстать чистый лист. Переходим во вкладку «Данные». Кликаем на кнопку на ленте «Из текста», размещенную в блоке инструментов «Получение внешних данных».
  2. Переход к добавлению текста в Microsoft Excel

  3. Открывается окно импорта текстового файла. В нем поддерживается открытие следующих форматов:
    • TXT;
    • CSV;
    • PRN.

    Переходим в директорию размещения импортируемого файла, выделяем его и кликаем по кнопке «Импорт».

  4. Импорт файла в Microsoft Excel

  5. Открывается окно Мастера текстов. Как видим, в поле предварительного просмотра символы отображаются некорректно. В поле «Формат файла» раскрываем выпадающий список и меняем в нем кодировку на «Юникод (UTF-8)».
    Переход к выбору кодировки в Мастере текстов в Microsoft Excel

    Если данные отображаются все равно некорректно, то пытаемся экспериментировать с применением других кодировок, пока текст в поле для предпросмотра не станет читаемым. После того, как результат удовлетворит вас, жмите на кнопку «Далее».

  6. Мастер текстов в Microsoft Excel

  7. Открывается следующее окно Мастера текста. Тут можно изменить знак разделителя, но рекомендуется оставить настройки по умолчанию (знак табуляции). Жмем на кнопку «Далее».
  8. Второе окно мастера текста в Microsoft Excel

  9. В последнем окне имеется возможность изменить формат данных столбца:
    • Общий;
    • Текстовый;
    • Дата;
    • Пропустить столбец.

    Тут настройки следует выставить, учитывая характер обрабатываемого контента. После этого жмем на кнопку «Готово».

  10. Третье окно мастера текста в Microsoft Excel

  11. В следующем окне указываем координаты левой верхней ячейки диапазона на листе, куда будут вставлены данные. Это можно сделать, вбив адрес вручную в соответствующее поле или просто выделив нужную ячейку на листе. После того, как координаты добавлены, в поле окна жмем кнопку «OK».
  12. Координаты вставки в Microsoft Excel

  13. После этого текст отобразится на листе в нужной нам кодировке. Остается его отформатировать или восстановить структуру таблицы, если это были табличные данные, так как при переформатировании она разрушается.

Текст добавлен в файл в Microsoft Excel

Способ 3: сохранение файла в определенной кодировке

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

  1. Переходим во вкладку «Файл». Кликаем по пункту «Сохранить как».
  2. Переход в сохранить как в Microsoft Excel

  3. Открывается окно сохранения документа. С помощью интерфейса Проводника определяем директорию, где файл будет храниться. Затем выставляем тип файла, если хотим сохранить книгу в формате отличном от стандартного формата Excel (xlsx). Потом кликаем по параметру «Сервис» и в открывшемся списке выбираем пункт «Параметры веб-документа».
  4. Переход в сервис в Microsoft Excel

  5. В открывшемся окне переходим во вкладку «Кодировка». В поле «Сохранить документ как» открываем выпадающий список и устанавливаем из перечня тот тип кодировки, который считаем нужным. После этого жмем на кнопку «OK».
  6. Параметры веб-документа в Microsoft Excel

  7. Возвращаемся в окно «Сохранения документа» и тут жмем на кнопку «Сохранить».

Сохранение файла в Microsoft Excel

Документ сохранится на жестком диске или съемном носителе в той кодировке, которую вы определили сами. Но нужно учесть, что теперь всегда документы, сохраненные в Excel, будут сохраняться в данной кодировке. Для того, чтобы изменить это, придется опять заходить в окно «Параметры веб-документа» и менять настройки.

Существует и другой путь к изменению настроек кодировки сохраненного текста.

  1. Находясь во вкладке «Файл», кликаем по пункту «Параметры».
  2. Переход в параметры в Microsoft Excel

  3. Открывается окно параметров Эксель. Выбираем подпункт «Дополнительно» из перечня расположенного в левой части окна. Центральную часть окна прокручиваем вниз до блока настроек «Общие». Тут кликаем по кнопке «Параметры веб-страницы».
  4. Переход в параметры документа в Microsoft Excel

  5. Открывается уже знакомое нам окно «Параметры веб-документа», где мы проделываем все те же действия, о которых говорили ранее.
  6. Параметры веб-документа в Microsoft Excel

    Теперь любой документ, сохраненный в Excel, будет иметь именно ту кодировку, которая была вами установлена.

    Как видим, у Эксель нет инструмента, который позволил бы быстро и удобно конвертировать текст из одной кодировки в другую. Мастер текста имеет слишком громоздкий функционал и обладает множеством не нужных для подобной процедуры возможностей. Используя его, вам придется проходить несколько шагов, которые непосредственно на данный процесс не влияют, а служат для других целей. Даже конвертация через сторонний текстовый редактор Notepad++ в этом случае выглядит несколько проще. Сохранение файлов в заданной кодировке в приложении Excel тоже усложнено тем фактом, что каждый раз при желании сменить данный параметр, вам придется изменять глобальные настройки программы.

Цитата
Сообщение от ivangelline
Посмотреть сообщение

подгрузила файл с другим именем, но суть проблемы та же

Дело в том, что когда dbf-файлы подгружаются в excel, по умолчанию считается, что у них кодировка cp866, а в вашем dbf-файле кодировка UTF-8. Соответственно, для решения возможны следующие пути:
1. При выгрузке из OSMAND в dbf указывать кодировку cp866

Либо

2.1 Получившийся xlsx-файл с кракозябрами сохранить в формате CSV-DOS: Файл-Сохранить как — Тип файла: CSV (MS-DOS) *.csv.
2.2 У полученного файла с расширением .csv поменять расширение на .txt
2.3 Открыть его обычным блокнотом. Вместо кракозябр должны быть строки которые должны нормально читаться. Если нет — значит что-то не так.
2.4. Сохранить файл с кодировкой ANSI: Файл — Сохранить как. Тип файла — текстовые документы. Кодировка: меняете с UTF на ANSI.
2.5. Меняете расширение обратно на .csv
2.6. Открываете его в Excel

Либо писать макрос для перекодирования из Cp866 -через UTF8 — в ANSI.

Я
   Mary01

11.12.13 — 15:58

Как в файле dbf вместо кракозябр получить кириллицу? Файл открываю Экселем. Можно ли сделать это средствами Экселя или обязательно использовать программу-декодер?

   simol

1 — 11.12.13 — 15:59

кодировку выбери при открытии в 1с

   George Wheels

2 — 11.12.13 — 15:59

Открыть и восстановить.

   Аксалотль

3 — 11.12.13 — 16:00

[1C/]пыр пыр[/1C]

   Аксалотль

4 — 11.12.13 — 16:03

простите за офтоп, как код вставлять на тутошнем форуме?

   Mary01

5 — 11.12.13 — 16:19

(4) ctrl + V

   Аксалотль

6 — 11.12.13 — 16:35

Запрос = Новый Запрос;

   Аксалотль

7 — 11.12.13 — 16:36

(5) Смешно, смеюсь.

   Wobland

8 — 11.12.13 — 16:39

Запрос = Новый Запрос;

«[«+»1c»+»]»+»Запрос = Новый Запрос;»+»[«+»/1c»+»]»

   Аксалотль

9 — 11.12.13 — 16:41

Запрос = Новый Запрос;
   Аксалотль

10 — 11.12.13 — 16:41

(8) Спасибо!

   Mary01

11 — 11.12.13 — 16:43

(7) я не шутила. я так и вставляла кусок кода, и он отображался здесь именно как код из 1С, и обведенный в рамку.

   Аксалотль

12 — 11.12.13 — 17:00

(11)

Запрос = Новый Запрос;

Запрос.Текст = «ВЫБРАТЬ

     | КонтактнаяИнформация.Представление

     |ИЗ

     | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация

     |ГДЕ

     | КонтактнаяИнформация.Объект.Ссылка = &ВыбКон

     | И КонтактнаяИнформация.Вид = &ВыбВид»;

Запрос.УстановитьПараметр(«ВыбКон», ЭтотОбъект.Контрагент);

Запрос.УстановитьПараметр(«ВыбВид», Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

   Аксалотль

13 — 11.12.13 — 17:01

(11) Хм и правда, прости за недоверие =)

   Mary01

14 — 11.12.13 — 17:23

(13) ок :-)

   Mary01

15 — 11.12.13 — 17:41

(1) в 1С я пытаюсь открыть его обработкой Загрузка данных из табл. док-та, в ее модуле прописана кодировка для открытия таких файлов — OEM, так и должно быть?

И еще вопрос, не открывается файл этой обработкой. в нем около 500000 строк, наверно слишком большой, 1С выдает пустую ошибку.

   Mary01

16 — 11.12.13 — 17:47

(2) можно поподробнее — чем открыть и как восстановить?

   KoDD

17 — 11.12.13 — 18:03

Через ДБФ редактор

   KoDD

18 — 11.12.13 — 18:08

На мыло кинул

  

George Wheels

19 — 12.12.13 — 07:54

(16) Ну я сначала подумал про средства Excel. При открытии файла на кнопке «Открыть» есть маленький треугольник. Там можно выбрать пункт «Открыть и восстановить». Попробовал. Для ДБФ работать не хочет.

Вообще я для этого пользуюсь FoxPro. При открытии дбф он предлагает установить кодовую страницу для файла. Потом открывай чем хочешь.

Можно вручную в HEX-редакторе задать кодовую страницу для дбф.

Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.

Понравилась статья? Поделить с друзьями:
  • Dbf в excel иероглифы
  • Dbf to excel python
  • Dbf converter for excel
  • Dbeaver экспорт в excel
  • Days worked in excel