|
|
#1 |
|
Программатор
|
Ax2012 и выгрузка в Эксель. Цвет ячейки, вставка формулы
Коллеги, доброго времени суток!!!
Продолжаю неравный бой с выгрузкой в Эксель через XML. собственно вопросы: 1. Eсть ли метод для раскраски ячейки? Мне что то не по глазам. 2. При выгрузке любой формулы (к примеру, =ЕСЛИ(X8<>"";"x";"")) эксель выгружает именно как строку. Если уже в Экселе встать в ячейку и нажать Энтер или Таб, то формула применяется корректно. Подскажите пожалуйста как быть. Заранее спасибо!!! |
|
|
|
|
#3 |
|
Участник
|
Если все делать не через XML, а через семейство классов SysExcel*, можно раскрасить ячейки через класс SysExcelInterior
X++: xlStyle = xlWorkBook.styles().add("Header"); xlStyle.interior().color(0x999999); xlStyle.font().bold(true); xlWorkSheet.range("A1:F1").style("Header");
__________________
// no comments |
|
|
|
|
#4 |
|
Программатор
|
Цитата:
Сообщение от dech
Если все делать не через XML, а через семейство классов SysExcel*, можно раскрасить ячейки через класс SysExcelInterior
X++: xlStyle = xlWorkBook.styles().add("Header"); xlStyle.interior().color(0x999999); xlStyle.font().bold(true); xlWorkSheet.range("A1:F1").style("Header");
|
|
|
|
|
#5 |
|
Программатор
|
К Аксапте то это как прикрутить?
вот так вставляется значение document.insertValue(ComExcelDocument_RU::numToNameCell(1, 3), '=ЕСЛИ(X8<>"";"x";"")'); Последний раз редактировалось Sada; 02.09.2013 в 15:10. |
|
|
|
|
#6 |
|
Участник
|
|
|
|
|
|
#7 |
|
Программатор
|
это слишком круто для меня
|
|
|
|
|
#8 |
|
Участник
|
в стандарте метода для вставки формулы нет. но его легко сделать аналогично insertValue(скачайте OXML Dev toolkit, он покажет какие теги отвечают за формулу)
особенность заключается в том, что вам помимо вставки формулы необходимо будет и вставлять расчет значения для этой формулы, вычислять автоматически ничего не получится. если этого не сделать Excel при открытии файла будет показывать #error в ячейке |
|
|
|
|
#9 |
|
Программатор
|
неужели никто не выгружал формулы в XML?
|
|
|
|
|
#10 |
|
Участник
|
Создайте раздел для стилей и затем используйте его:
X++: <Styles>
<Style ss:ID="s43">
<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"
ss:Color="#000000"/>
<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"
ss:Color="#000000"/>
<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"
ss:Color="#000000"/>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"
ss:Color="#000000"/>
</Borders>
<Font ss:Bold="1"/>
<Interior ss:Color="#FFFF99" ss:Pattern="Solid"/>
</Style>
</Styles>
<xsl:template match="*" mode ="Header">
<Cell ss:StyleID="s43">
<Data ss:Type="String">
<xsl:value-of select="."/>
</Data>
</Cell>
</xsl:template>
__________________
// no comments |
|
|
|
|
#11 |
|
Участник
|
Попробовал, формулы написанные в тексте excel xml прекрасно работают
X++: <Row>
<Cell><Data ss:Type="Number">1</Data></Cell>
<Cell><Data ss:Type="Number">2</Data></Cell>
<Cell ss:Formula="=RC[-2]*RC[-1]"><Data ss:Type="Number">3</Data></Cell>
</Row>
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
|
|
|
#12 |
|
Программатор
|
Друзья, мне кажется вы меня не поняли или я не совсем понятно сфомулировал вопрос. У меня есть класс, наследник от XMLExcelReport. В нем в fillBody() я заполняю значения ячеек в столбцах, стобцы динамические, и формулы получается тоже. Зашивать в шаблоне из нельзя. поэтому при вставке формулы в ячейку как значения
document.insertValue(ComExcelDocument_RU::numToNameCell(1, 3), '=ЕСЛИ(X8<>"";"x";"")'); у меня происходит сабж Последний раз редактировалось Sada; 04.09.2013 в 12:46. |
|
|
|
|
#13 |
|
Участник
|
Попробуйте в вашем выражении использовать IF вместо ЕСЛИ и запятую вместо точки с запятой, возможно все дело в этом.
X++: =IF(X8<>"","x","")
__________________
// no comments Последний раз редактировалось dech; 04.09.2013 в 13:23. |
|
|
|
|
#14 |
|
северный Будда
|
Я не совсем понял насчёт динамических столбцов, но если вы имели в виду, что динамический набор полей вывода, то гораздо проще зашить в шаблон все поля, а потом просто скрывать/удалять ненужные колонки
__________________
С уважением, Вячеслав |
|
|
|
|
#15 |
|
Программатор
|
проблема не в том на каком языке формула. а в том, что при открытии экселя он не понимает выгруженные в него формулы, и начинает понимать после позиционирования курсора в ячейку с формулой и нажатя Enter или Tab. С формулой по идее все ОК.
|
|
|
|
|
#16 |
|
Moderator
|
А доступ к COM-объектам Excel есть в задачке? Если да, то после выгрузки можно попробовать оживить формулы такой нехитрой операцией:
Range("A1:A10").Formula = Range("A1:A10").Value |
|
|
|
|
#17 |
|
Участник
|
__________________
// no comments |
|
|
|
|
#18 |
|
Программатор
|
|
|
|
|
|
#19 |
|
Программатор
|
после формирования в XML, Аксапта бахает всё это дело в Эксель, и там в принципе можно добраться и до COM. А как это в Аксапте будет выглядеть?
|
|
|
|
|
#20 |
|
Moderator
|
|
|
|
|
| За это сообщение автора поблагодарили: Sada (7), Artikov (1). | |
| Теги |
| ax2012, excel |
|
|
|