|
Вывод в шаблон excel c сохранением формул |
☑ |
0
EarthsSoul
07.06.12
✎
13:24
|
Здравствуйте
В общем я хочу печатную форму выводить в Excel, нашел строчки кода которые обычную печатную форму выведут в Excel файл а мне надо что бы в Excel файле, где могут быть формулы, что бы они там были, т. е. вместо числа суммы должна быть формула произведения цены на количество, в ячейке под суммой должна быть формула суммы. И выводятся табличные части документа, где количество строк соответственно разное, значит нужны шаблоны в Excel...
Дак вот вопрос как сделать вывод в Excel по шаблону?
|
|
1
Администратор 1С
07.06.12
✎
13:30
|
Пример вывода формул:
Excel = Новый COMОбъект("Excel.Application");
WB = Excel.Workbooks.Open(имяФайла);
WS = WB.Worksheets(НомерЛиста);
WS.Cells(НомерСтроки,КолонкаСумма).FormulaR1C1="=SUM(R[1]C:R["+Формат((i-ПерваяСтрока+1),"ЧГ=0")+"]C)";
|
|
2
EarthsSoul
07.06.12
✎
13:47
|
(1) спасибо, но тогда
Вот вывожу Заказ поставщику в Excel, сколько будет строк в табличной части товары не известно, но ясно что таблица в Excel естественно нужна. Как быть?
1) Может быть можно (или даже нужно) у ячейки задавать свойства из 1с, типа грница такая то....
2) Или можно применить как механизм в 1с, использовать одну и туже строчку в виде шаблона, но только как тогда строки рас копировать?
|
|
3
Fish
гуру
07.06.12
✎
13:56
|
(2) Например так:
Скопировать строку
Excel.Rows(НомерСтроки1+":"+НомерСтроки2).Select();
Excel.Selection.Copy();
Вставить строку
Excel.Rows(НомерСтроки1+":"+НомерСтроки2).Select();
Excel.Selection.Insert();
|
|
4
Undefined
07.06.12
✎
13:56
|
(2)плохо понял в чем проблема. Может подойдет вот это. В макете в 1С вставляешь формулу Excel как текст. Потом в файле эксель обходишь строки и если он находищь текст формулы (по ключевым словам например) выполняешь команду из (1), где вместо формулы указываешь текст из этой ячейки. Я так вывод прайса в ексель с поддержкой формул делал
|
|
5
EarthsSoul
07.06.12
✎
14:03
|
Думаю (1) и (3) разрешат задачу, приступлю к реализации)), вернусь как только буду в тупике или решу задачу)), всем спасибо ))
|
|
6
Ant1773
07.06.12
✎
14:41
|
(2)Я делал подобное на делфи:
BufferGrid := VarArrayCreate([0,(QueryRpt.RecordCount),0,12],varVariant);
...
Sheet.Rows['9'].Select; //выделяем "идеальную строку"
Exl.Selection.Copy; //копируем строку
Sheet.Rows['9:'+IntToStr(QueryRpt.RecordCount+6)].Select; //выделяем необходимый диапазон
Exl.Selection.Insert; //добавляем строки
Sheet.Range['A8',sheet.Cells.Item[QueryRpt.RecordCount+7,12]].Value2:=BufferGrid; //заполняем данными
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший