Перенося данные из таблиц Эксель в 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),""); //Тут удяляем кавычки
Форм = СтрЗаменить(Форм,"*","");
Форм = Число(Форм);
Итого = Форм * Значение;
Все!
А Вы сами это пробовали?
Насколько я знаю, может и не прав, но такая конструкция
«Эксель = СоздатьОбъект(«Excel.Application»);»
в 7.7 просто не работает, т.к. в ней требуется английское написание «создать объект».
Да и такое: «Значение = СокрЛП(НужныйЛист.Cells(Стр,Столб).Тext);»
а потом: «Форм = Число(Форм);»
и дальше: :Итого = Форм * Значение;»…?
Зачем число умножать на строку?
Подправил.
Все уже несколько месяцев работает замечательно…
Немного не по теме, вы случаем не знаете как из 1с в Эксэле задавать параметры ячейки (цвет, фон, линии, формула…. итп) просто переодически надо и нигде не нахожу, вот и решил спросить
(3) navi, вот тут посмотри:
http://exp-1c.narod.ru/articles/articl01.htm
Я, например вот какую штуку набросал — записывает в первую ячейку таблицы данные и сохраняет:
Показать
Сп(4) Большое спасибо.
Спасибо, познавательно.