Необходимо создать иерархию группвыставление атрибута ячейки/строки
<dataQuery> <sqlStatement name="LEVEL0"> <![CDATA[ select level a from dual connect by level < 5]]> </sqlStatement> <sqlStatement name="LEVEL1"> <![CDATA[ select level b from dual connect by level < :PRM]]> </sqlStatement> </dataQuery> <group name="LEVEL0" source="LEVEL0"> <element name="PRM" value="a"/> <group name="LEVEL1" source="LEVEL1"> <element name="VAL" value="b"/> </group> </group>Excel:
Обращаем внимание: в дочерних группах двойной слэш перед именем не ставится.
<?for-each: //GROUP_L0?> <?PRM?> <?for-each: GROUP_L1?> <?VAL?> <?end for-each?> <?end for-each?>
Важно: эта же схема в выхлодном XSL файле должна выглядеть так (внимание на слеши и точки!):
<xsl:for-each select="//LEVEL0"> <Row ss:AutoFitHeight="0"> <Cell> <Data ss:Type="String"> <!-- Data --><xsl:value-of select=".//PRM"/><!-- /Data --> </Data> </Cell> </Row> <xsl:for-each select=".//LEVEL1"> <Row ss:AutoFitHeight="0"> <Cell ss:Index="2"> <Data ss:Type="String"> <!-- Data --><xsl:value-of select=".//VAL"/><!-- /Data --> </Data> </Cell> </Row> </xsl:for-each> </xsl:for-each>Результат:
1
2
1 3
1
2 4
1
2
3
<xsl:attribute name="ss:MergeAcross"> <xsl:value-of select="//RPER_CNT"/> </xsl:attribute>
первоначальная настройка xsl-шаблона<xsl:if test="//PARAM1 = 'MY_VAL'"> <xsl:for-each select="//ARRAY"> ... </xsl:for-each> </xsl:if>
Имеем шаблон, выгруженый из Excel в виде XML.перенос текста с автовыбором высоты строки
1. Убираем всё до
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet",вставляем
<?xml version="1.0"?> <!DOCTYPE xsl:stylesheet [ <!ENTITY newline "&#10;"> ]> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ora="http://www.oracle.com/XSL/Transform/java/" xmlns:xdofo="http://xmlns.oracle.com/oxp/fo/extensions" xmlns:xdoxslt="http://www.oracle.com/XSL/Transform/java/oracle.apps.xdo.template.rtf.XSLTFunctions" xmlns:xdoxliff="urn:oasis:names:tc:xliff:document:1.1" xmlns:xlink="http://www.w3.org/1999/xlink"> <xsl:param name="_XDOCTX">#</xsl:param> <xsl:template match="/"> <xsl:processing-instruction name="mso-application"> <xsl:text>progid="Excel.Sheet"</xsl:text> </xsl:processing-instruction>, убираем всё после
</Workbook>, вставляем
</xsl:template> </xsl:stylesheet>2. Убираем атрибуты ExpandedRowCount и ExpandedColumnCount из узла Table
Прописать в стиле ss:WrapText="1", в теге Row - любое значение высоты, например ss:Height="43.199999999999996"