gifts2017

Определение формата ячейки Excel из 1С

Опубликовал Иван Гредасов (griff19) в раздел Обмен - Загрузка и выгрузка в Excel

Перенося данные из таблиц Эксель в 1С, я заметил что некоторые ячейки с содержимым вида "50*10" в 1С переносятся не в таком же виде, а просто, например, цифрой 50. Все дело в формате ячейки!

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

Итак, я опишу как получить формат ячейки и что с ним сделать, чтобы получить нормальное значение, например "50*10,0"=500

Эксель = СоздатьОбъект("Excel.Application");
Книга = Эксель.Workbooks;
Книга.Open("ИмяФайла");
Лист = 1;
НужныйЛист = Эксель.Sheets(Лист);
Стр = 1; Столб = 1;
Форм = СокрЛП(НужныйЛист.Cells(Стр,Столб).NumberFormat);
Значение = СокрЛП(НужныйЛист.Cells(Стр,Столб).Тext);
Значение = Число(Значение);
Книга.Close();
//Наш формат получается в виде - "*10,0" удаляем лишние символы и меняем запятую на точку (как принято в 1С)
Форм = СтрЗаменить(Форм,",",".");
Форм = СтрЗаменить(Форм,Симв(34),""); //Тут удяляем кавычки
Форм = СтрЗаменить(Форм,"*","");
Форм = Число(Форм);
Итого = Форм * Значение;

Все!

См. также

Подписаться Добавить вознаграждение
Комментарии
1. nelse (nelse) 26.01.12 00:02
А Вы сами это пробовали?
Насколько я знаю, может и не прав, но такая конструкция
"Эксель = СоздатьОбъект("Excel.Application");"
в 7.7 просто не работает, т.к. в ней требуется английское написание "создать объект".
Да и такое: "Значение = СокрЛП(НужныйЛист.Cells(Стр,Столб).Тext);"
а потом: "Форм = Число(Форм);"
и дальше: :Итого = Форм * Значение;"...?
Зачем число умножать на строку?
2. Иван Гредасов (griff19) 26.01.12 08:39
Подправил.
Все уже несколько месяцев работает замечательно...
3. Ivan Migov (navi) 10.02.12 13:04
Немного не по теме, вы случаем не знаете как из 1с в Эксэле задавать параметры ячейки (цвет, фон, линии, формула.... итп) просто переодически надо и нигде не нахожу, вот и решил спросить
4. Иван Гредасов (griff19) 11.02.12 19:02
5. Иван Гредасов (griff19) 11.02.12 19:45
Я, например вот какую штуку набросал - записывает в первую ячейку таблицы данные и сохраняет:
Попытка 
    Эксель=СоздатьОбъект("Excel.Application");
Исключение 
    Предупреждение("Excel на компьютере не установлен!"); 
    Возврат; 
КонецПопытки;
Книга=Эксель.Workbooks.Add();
Лист = Эксель.Sheets(1);
Лист.Cells(1,1).Value="333";
Эксель.DisplayAlerts = 0; //Если файл существует - перезаписываем
Лист.SaveAs("D:\Excel.xlsx");
Книга.Close();
Эксель.Quit();
...Показать Скрыть
6. Ivan Migov (navi) 13.02.12 13:44
Сп(4) griff19, Большое спасибо.
7. Эльвира (egoel) 28.02.12 09:39
Спасибо, познавательно.