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: сохранение файла в определенной кодировке
- Вопросы и ответы
С потребностью менять кодировку текста часто сталкиваются пользователи, работающие браузерах, текстовых редакторах и процессорах. Тем не менее, и при работе в табличном процессоре Excel такая необходимость тоже может возникнуть, ведь эта программа обрабатывает не только цифры, но и текст. Давайте разберемся, как изменить кодировку в Экселе.
Урок: Кодировка в Microsoft Word
Работа с кодировкой текста
Кодировка текста – эта набор электронных цифровых выражений, которые преобразуются в понятные для пользователя символы. Существует много видов кодировки, у каждого из которых имеются свои правила и язык. Умение программы распознавать конкретный язык и переводить его на понятные для обычного человека знаки (буквы, цифры, другие символы) определяет, сможет ли приложение работать с конкретным текстом или нет. Среди популярных текстовых кодировок следует выделить такие:
- Windows-1251;
- KOI-8;
- ASCII;
- ANSI;
- UKS-2;
- UTF-8 (Юникод).
Последнее наименование является самым распространенным среди кодировок в мире, так как считается своего рода универсальным стандартом.
Чаще всего, программа сама распознаёт кодировку и автоматически переключается на неё, но в отдельных случаях пользователю нужно указать приложению её вид. Только тогда оно сможет корректно работать с кодированными символами.
Наибольшее количество проблем с расшифровкой кодировки у программы Excel встречается при попытке открытия файлов CSV или экспорте файлов txt. Часто, вместо обычных букв при открытии этих файлов через Эксель, мы можем наблюдать непонятные символы, так называемые «кракозябры». В этих случаях пользователю нужно совершить определенные манипуляции для того, чтобы программа начала корректно отображать данные. Существует несколько способов решения данной проблемы.
Способ 1: изменение кодировки с помощью Notepad++
К сожалению, полноценного инструмента, который позволял бы быстро изменять кодировку в любом типе текстов у Эксель нет. Поэтому приходится в этих целях использовать многошаговые решения или прибегать к помощи сторонних приложений. Одним из самых надежных способов является использование текстового редактора Notepad++.
- Запускаем приложение Notepad++. Кликаем по пункту «Файл». Из открывшегося списка выбираем пункт «Открыть». Как альтернативный вариант, можно набрать на клавиатуре сочетание клавиш Ctrl+O.
- Запускается окно открытия файла. Переходим в директорию, где расположен документ, который некорректно отобразился в Экселе. Выделяем его и жмем на кнопку «Открыть» в нижней части окна.
- Файл открывается в окне редактора Notepad++. Внизу окна в правой части строки состояния указана текущая кодировка документа. Так как Excel отображает её некорректно, требуется произвести изменения. Набираем комбинацию клавиш Ctrl+A на клавиатуре, чтобы выделить весь текст. Кликаем по пункту меню «Кодировки». В открывшемся списке выбираем пункт «Преобразовать в UTF-8». Это кодировка Юникода и с ней Эксель работает максимально корректно.
- После этого, чтобы сохранить изменения в файле жмем на кнопку на панели инструментов в виде дискеты. Закрываем Notepad++, нажав на кнопку в виде белого крестика в красном квадрате в верхнем правом углу окна.
- Открываем файл стандартным способом через проводник или с помощью любого другого варианта в программе Excel. Как видим, все символы теперь отображаются корректно.
Несмотря на то, что данный способ основан на использовании стороннего программного обеспечения, он является одним из самых простых вариантов для перекодировки содержимого файлов под Эксель.
Способ 2: применение Мастера текстов
Кроме того, совершить преобразование можно и с помощью встроенных инструментов программы, а именно Мастера текстов. Как ни странно, использование данного инструмента несколько сложнее, чем применение сторонней программы, описанной в предыдущем методе.
- Запускаем программу Excel. Нужно активировать именно само приложение, а не открыть с его помощью документ. То есть, перед вами должен предстать чистый лист. Переходим во вкладку «Данные». Кликаем на кнопку на ленте «Из текста», размещенную в блоке инструментов «Получение внешних данных».
- Открывается окно импорта текстового файла. В нем поддерживается открытие следующих форматов:
- TXT;
- CSV;
- PRN.
Переходим в директорию размещения импортируемого файла, выделяем его и кликаем по кнопке «Импорт».
- Открывается окно Мастера текстов. Как видим, в поле предварительного просмотра символы отображаются некорректно. В поле «Формат файла» раскрываем выпадающий список и меняем в нем кодировку на «Юникод (UTF-8)».
Если данные отображаются все равно некорректно, то пытаемся экспериментировать с применением других кодировок, пока текст в поле для предпросмотра не станет читаемым. После того, как результат удовлетворит вас, жмите на кнопку «Далее».
- Открывается следующее окно Мастера текста. Тут можно изменить знак разделителя, но рекомендуется оставить настройки по умолчанию (знак табуляции). Жмем на кнопку «Далее».
- В последнем окне имеется возможность изменить формат данных столбца:
- Общий;
- Текстовый;
- Дата;
- Пропустить столбец.
Тут настройки следует выставить, учитывая характер обрабатываемого контента. После этого жмем на кнопку «Готово».
- В следующем окне указываем координаты левой верхней ячейки диапазона на листе, куда будут вставлены данные. Это можно сделать, вбив адрес вручную в соответствующее поле или просто выделив нужную ячейку на листе. После того, как координаты добавлены, в поле окна жмем кнопку «OK».
- После этого текст отобразится на листе в нужной нам кодировке. Остается его отформатировать или восстановить структуру таблицы, если это были табличные данные, так как при переформатировании она разрушается.
Способ 3: сохранение файла в определенной кодировке
Бывает и обратная ситуация, когда файл нужно не открыть с корректным отображением данных, а сохранить в установленной кодировке. В Экселе можно выполнить и эту задачу.
- Переходим во вкладку «Файл». Кликаем по пункту «Сохранить как».
- Открывается окно сохранения документа. С помощью интерфейса Проводника определяем директорию, где файл будет храниться. Затем выставляем тип файла, если хотим сохранить книгу в формате отличном от стандартного формата Excel (xlsx). Потом кликаем по параметру «Сервис» и в открывшемся списке выбираем пункт «Параметры веб-документа».
- В открывшемся окне переходим во вкладку «Кодировка». В поле «Сохранить документ как» открываем выпадающий список и устанавливаем из перечня тот тип кодировки, который считаем нужным. После этого жмем на кнопку «OK».
- Возвращаемся в окно «Сохранения документа» и тут жмем на кнопку «Сохранить».
Документ сохранится на жестком диске или съемном носителе в той кодировке, которую вы определили сами. Но нужно учесть, что теперь всегда документы, сохраненные в 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, так и должно быть? |
||
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-редакторе задать кодовую страницу для дбф. |
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.