| 
    
            
         
         | 
    
    
  | 
v7: Автопересчет формул | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Генетический мусор    
     09.10.12 
            ✎
    09:23 
 | 
         
        Работаю с компонентой SpreadSheet.dll, смысл в "нормальном" виде, с группировками и прочее из 7.7. сохранить файл в эксель, в одной из строк таблицы формула - к примеру такая =37,6/100*(100-E16), выгружает в эксель не формулой, а строкой, как победить, причем я по этой ячейке в сформированном файле просто щелкаю и получается формула. В SpreadSheet.dll есть метод АвтопересчетФормул(), но почему то он у меня не работает, разработчику писал, может кто сталкивался. Заранее благодарю     
         | 
|||
| 
    1
    
        dk    
     09.10.12 
            ✎
    09:33 
 | 
         
        юзай Excel по OLE )     
         | 
|||
| 
    2
    
        Генетический мусор    
     09.10.12 
            ✎
    09:37 
 | 
         
        да уже столько написано((((     
         | 
|||
| 
    3
    
        АЛьФ    
     09.10.12 
            ✎
    09:39 
 | 
         
        Формулу в Эксель не выгрузить. Об этом подробно написано на форуме разработчика.     
         | 
|||
| 
    4
    
        Генетический мусор    
     09.10.12 
            ✎
    10:53 
 | 
         
        3) никакими средствами? или через оле можно, погуглил, тоже чего-то не очень нашел     
         | 
|||
| 
    5
    
        dk    
     09.10.12 
            ✎
    11:02 
 | 
         
        по OLE можно почти все     
         | 
|||
| 
    6
    
        Генетический мусор    
     09.10.12 
            ✎
    13:37 
 | 
         
        ну туплю(((
  
        Для Сч = 16 По КоличествоСтрок Цикл НомерСтроки = Формат(Сч, "ЧГ=0"); НомерКолонки = 5; //Если формула > 0 Тогда //Иначе // Формула = Число(Excel.Cells(Сч,5).Value); //КонецЕсли; Выборка = Excel.Cells(Сч,4).Value; Если Число(Выборка) > 0 Тогда //Excel.Cells(Сч,5).Formula = " = Выборка / 100"// * 100-формула"; //Excel.Cells(16,5).Value); // проставим формулу для пересчета количества в количество упаковок Попытка Лист.Cells(НомерСтроки,НомерКолонки).Formula = "=RC[-НомерКолонки]/100";///ну хоть такую =9,35/100*(100-E16) Исключение КонецПопытки; КонецЕсли; КонецЦикла; Excel.Visible = 0; Книга.Save(); Книга.Close();  | 
|||
| 
    7
    
        Тьма    
     09.10.12 
            ✎
    13:41 
 | 
         
        Лист.Cells(Т2.НомерСтроки+3,Т1.НомерСтроки*3+3).FormulaR1C1 = "=RC[-2]*RC[-1]";     
         | 
|||
| 
    8
    
        Генетический мусор    
     10.10.12 
            ✎
    07:39 
 | 
         
        спасибо други, засунул формулу, как мне теперь ее отформатировать программно что там формат этой ячейки денежный и там два знака после запятой:). Заранее благодарю     
         | 
|||
| 
    9
    
        dk    
     10.10.12 
            ✎
    08:09 
 | 
         
        Лист.Cells(Т2.НомерСтроки+3,Т1.НомерСтроки*3+3).NumberFormat = "0.00";
  
        научись пользоваться макросами  | 
|||
| 
    10
    
        Тьма    
     10.10.12 
            ✎
    08:12 
 | 
         
        Лист.Cells(Т2.НомерСтроки+3,3).NumberFormat="0"+Экс.decimalseparator+"00";
  
        кроме того, эксель любит воспринимать числа как текст и не проводит над ними затем операции сложения-вычитания. Типа "число сохранено как текст". Недавно боролся с этим, нашел такой не очень красивый, но работающий метод: Лист.Cells(Т2.НомерСтроки+3,Т1.НомерСтроки*3+2).Value="@"+сокрлп(формат(Цена,"Ч012.2,")); ... Лист.Cells.Replace("@", "");  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |