Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Не читается Exel - файл из 1С (http://forums.kuban.ru/f1040/ne_chitaetsya_exel_-_fajl_iz_1s-2658259.html)

romba 28.05.2012 15:34

Не читается Exel - файл из 1С
 
Помогите советом: обработка заполнения документа читает файл Excel, у которого кодировка UTF-8; при этом русские буквы попадают в 1С кракозябрами. Как сделать чтобы все читалось нормально?

VZ 28.05.2012 15:48

Покажи, как читаешь.

romba 28.05.2012 16:59

Excel = новый COMОбъект("Excel.Application");
Excel.Workbooks.Open(ИмяФайла);
Excel.Sheets(НомерЛиста).select();
Для а = 2 по ФайлСтрок-1 Цикл
Ячейка = СокрЛП(Excel.Cells(а,НомерКолонки).Value);
КонецЦикла;

EarlyBird 28.05.2012 17:06

какой формат файла? CSV ?

sinegurochka 28.05.2012 20:05

[url=http://help1c.com/faq/view/495.html]Пример перекодировки в/из utf8 в 1с77 штатными средствами[/url]

VZ 28.05.2012 20:34

4-Синегурочка > У автора "восьмерка" ;)
2-romba > Не различаем [b].value[/b] (значение) и [b].text[/b] (представление)? Зря. Для строк, разумеется, это одинаково, но вот числа или даты - источник проблем. Преобразования (вроде СокрЛП) лучше применять после определения типа.
К сабжу отношение не имеет, но все-таки... :)

romba 29.05.2012 05:14

(3) csv
(4) Спасибо, переложу на восьмерку

EarlyBird 29.05.2012 06:34

(6) CSV - это, по сути, тестовый файл с разделителями (разделитель - точка с запятой).
Его проще открывать без использования приложения EXCEL, тупо читать как текст.

Текст = СоздатьОбъект("Текст");
Текст.Открыть(ПолныйПутьКФайлу);

Для i=1 по Текст.КоличествоСтрок() цикл
ТекСтрока = [b]OemToAnsi[/b](Текст.ПолучитьСтроку(i));

МногоСтрок = СтрЗаменить(ТекСтрока, ";", РазделительСтрок);

ПервоеПоле = СтрПолучитьСтроку(МногоСтрок,1);
ВтороеПоле = СтрПолучитьСтроку(МногоСтрок,2);
ТретьеПоле = СтрПолучитьСтроку(МногоСтрок,3);

EarlyBird 29.05.2012 06:36

здесь обрати внимание на использование функции [b]OemToAnsi[/b]
она преобразует символы к читаемой кодировке

drums2004 29.05.2012 15:26

(8) гонишь . это перекодировки из 1251 страницы в 866 и обратно . к УТФ-8 никакого отношения не имеет . Не учи плохому .

EarlyBird 29.05.2012 17:15

(9) тьху на тебя!
не пробовал - не говори.

Uho 29.05.2012 17:18

10-Ирли Бёрд > кинь в него голубем!

Чучундер 29.05.2012 17:49

(10) стопудово Оем2Анси преобразует УТФ8...?

Гинзбург 29.05.2012 21:32

"Excel, у которого кодировка UTF-8"
нобель ворочается

romba 31.05.2012 14:08

Не получается: OemToAnsi в восьмерке нет; процедура из (4) не работает - все строки делает пустыми.
Еще идеи есть?

Buzz 31.05.2012 15:50

Я делал через вот это:
Стрим = СоздатьОбъект("ADODB.Stream");
Стрим.LoadFromFile(Путь+Имя);
Стирм.Charset = "utf8";
Посмотри в интернете методы этой штуки.


Текущее время: 20:19. Часовой пояс GMT +3.