|
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("@", "");
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший