![]() |
![]() |
![]() |
|
Изменение кодовой страницы файла | ☑ | ||
---|---|---|---|---|
0
Кукуев
01.10.07
✎
17:44
|
Есть файл для загрузки, *.txt, открываю его:
Если ФС.ВыбратьФайл(0,Файл,Катал,"Открыть файл для загрузки","Текстовые файлы(*.txt)|*.txt","",) = 0 Тогда Возврат 0; КонецЕсли; При этом копирую его в каталог архива и, изменив расширение на .csv, в каталог для непосредственно открытия в Excel и загрузки данных. Если ФС.СуществуетФайл(КаталогАрхива) = 1 Тогда ФС.КопироватьФайл(Файл, КаталогАрхива + "\" +Файл, 0); ФС.КопироватьФайл(Файл, Каталог + "\" +"Temp.csv", 0); Иначе Сообщить("Каталога архива пока не существует"); КонецЕсли; ВрФайл = Каталог + "\" +"Temp.csv"; Возврат 1; Затем другой процедурой принимаю данные: ДБФ = СоздатьОбъект("XBase"); ВрФайл = КаталогИБ() +"Temp.csv";/ Попытка Excel = СоздатьОбъект("Excel.Application"); Исключение Сообщить("Excel на компьютере не установлен.","!"); Возврат; КонецПопытки; Excel.Workbooks.Open(ВрФайл); Книга = Excel.ActiveWorkbook; ……….. и т.д…. Все это работает, но сделано для исходного файла, у которого кодовая страница 1251 (Win). А если кодовая страница DOS – естественно, пишет кракозябры вместо русских символов. Для перекодировки нужно использовать метод КодоваяСтраница(1), но вот где это делать – не могу найти… Пробовал ставить после ДБФ = СоздатьОбъект("XBase"); строку ДБФ.КодоваяСтраница(1); - никаких эмоций… Пробовал также и в другие места вставлять – не помогает… Подскажите, как, имея файл в DOS кодировке, открыть его для корректной загрузки? |
|||
1
ТелепатБот
гуру
01.10.07
✎
17:44
|
||||
2
Ёпрст2
01.10.07
✎
17:53
|
(0)
СоздатьОбъект КодоваяСтраница ОткрытьФайл |
|||
3
Кукуев
01.10.07
✎
18:02
|
(2)Спасибо, это знаю, пробовал, но не могу понять - в какое место, на каком этапе это вставлять...
|
|||
4
Ёпрст2
01.10.07
✎
18:11
|
(3) Ну этот же метод возвращает тебе , в какой кодировке файло ... вот и проверяй. потом устанавливай что надо ..
|
|||
5
smaharbA
01.10.07
✎
18:13
|
... только вот нафига ? |
|||
6
Кукуев
01.10.07
✎
18:22
|
Я точно знаю, что в DOS кодировке, по-всякому уж пробовал эту КодовуюСтраницу вставлять, и перед копированием, и перед открытием - никак не получается...
С файлом в кодировке Win у меня все работает...Я бы даже сделал "перекодирование" из Dos в Win отдельной процедурой, но и это не знаю как сделать, т.е. имея файл в Dos кодировке пересохранить его в Win кодировке... |
|||
7
Кукуев
01.10.07
✎
18:24
|
(5)Спасибо большое, пока писал предыдущее сообщение - этот пост не видел!
попробую... |
|||
8
Кукуев
01.10.07
✎
18:41
|
Эх, что-то я видать, не так написал... сделал так:
Excel.Workbooks.OpenText(ВрФайл, 866, 1, 1, -4142, 0, 0, 0, 0, 0, -1, ",;"); Книга = Excel.Workbooks(ВрФайл); Строк = Excel.Cells.CurrentRegion.Rows.Count; Файл выбираю, но при запуске загрузки сразу выдает ошибку Книга = Excel.Workbooks(ВрФайл); {C:\1С\КОНФИГУРАЦИИ\1SBDEMO\EXTFORMS\1ЗАГРУЗКА ДАННЫХ.ERT(1400)}: : и все, больше ничего не происходит... |
|||
9
Кукуев
01.10.07
✎
18:46
|
(5)Вкраце поясню - зачем все это...
Обработка у меня работает с файлом в Win-кодировке, все принимает, все хорошо, но изменили условие задачи - принимаемый файл должен быть в Dos-кодировке. Вот и встал вопрос - как изменить обработку, чтобы корректно, без кракозябров принимался этот файл. Или хотя бы как описать процедуру, которая изменяет кодировку файла, чтобы потом принимать файл уже в Win кодировке... |
|||
10
smaharbA
01.10.07
✎
18:54
|
//*******************************************
Процедура Сформировать() Перем Путь,Имя; Если ФС.ВыбратьФайл(0,Имя,Путь,"","txt (*.txt)|*.txt| csv (*.csv)|*.csv","txt")=0 Тогда Возврат; КонецЕсли; Excel=СоздатьОбъект("Excel.Application"); ВрФайл=Путь+Имя; Excel.Workbooks.OpenText(ВрФайл, 866, 1, 1, -4142, 0, 0, 0, 0, 0, -1, ",;"); Книга = Excel.Workbooks(Имя); Строк = Excel.Cells.CurrentRegion.Rows.Count; Сообщить(Строк); КонецПроцедуры |
|||
11
Кукуев
01.10.07
✎
19:16
|
(10)Эту процедуру просто повесил на кнопку, она открывает окно выбора файла, показывает число строк в нем а вот кодировка какая была - не меняется... или что-то не так делаю?
|
|||
12
Кукуев
01.10.07
✎
19:35
|
(10)Спасибо, тебе, о гуру!!! Конечно же, все было верно... Дело в моей некомпетентности, разобрался, все правильно перекодируется и принимается, осталось в порядок привести...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |