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

Перенося данные из таблиц Эксель в 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),""); //Тут удяляем кавычки
Форм = СтрЗаменить(Форм,"*","");
Форм = Число(Форм);
Итого = Форм * Значение;

Все!

7 Comments

  1. nelse

    А Вы сами это пробовали?

    Насколько я знаю, может и не прав, но такая конструкция

    «Эксель = СоздатьОбъект(«Excel.Application»);»

    в 7.7 просто не работает, т.к. в ней требуется английское написание «создать объект».

    Да и такое: «Значение = СокрЛП(НужныйЛист.Cells(Стр,Столб).Тext);»

    а потом: «Форм = Число(Форм);»

    и дальше: :Итого = Форм * Значение;»…?

    Зачем число умножать на строку?

    Reply
  2. griff19

    Подправил.

    Все уже несколько месяцев работает замечательно…

    Reply
  3. navi

    Немного не по теме, вы случаем не знаете как из 1с в Эксэле задавать параметры ячейки (цвет, фон, линии, формула…. итп) просто переодически надо и нигде не нахожу, вот и решил спросить

    Reply
  4. griff19

    (3) navi, вот тут посмотри:

    http://exp-1c.narod.ru/articles/articl01.htm

    Reply
  5. griff19

    Я, например вот какую штуку набросал — записывает в первую ячейку таблицы данные и сохраняет:

    Попытка
    Эксель=СоздатьОбъект(«Excel.Application»);
    Исключение
    Предупреждение(«Excel на компьютере не установлен!»);
    Возврат;
    КонецПопытки;
    Книга=Эксель.Workbooks.Add();
    Лист = Эксель.Sheets(1);
    Лист.Cells(1,1).Value=»333″;
    Эксель.DisplayAlerts = 0; //Если файл существует — перезаписываем
    Лист.SaveAs(«D:Excel.xlsx»);
    Книга.Close();
    Эксель.Quit();
    

    Показать

    Reply
  6. navi

    Сп(4) Большое спасибо.

    Reply
  7. egoel

    Спасибо, познавательно.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *