3

我想以编程方式(Salesforce Apex)生成类似于下面屏幕截图的 Excel。单元格的数量,单元格的背景颜色将在运行时决定,因此使用编程方式。 在此处输入图像描述

为了实现这一点,我尝试为 Cell > Data 应用内联样式,但似乎我们不能在那里应用内联样式。例如,样式被应用到第一个带有ss:StyleID="s66". 但是对于第二个 Cell,它不能以这种方式使用内联样式。在我的要求中,因为我无法预先定义我需要一些动态方式的样式。谁能确认这是否不可能或提供任何指导?

<Row>

    <Cell ss:StyleID="s66"><Data ss:Type="String">Test Sheet1</Data></Cell>
    <Cell ><Data ss:Type="String"><Font ss:Color="#FF0000">Sample Text</Font></Data></Cell>

</Row>
4

1 回答 1

6

XML您尝试使用的是Office 2003 SpreadsheetML. 参考是XML 电子表格参考

如果您查看“XML Spreadsheet Tag Hierarchy”,您将看到名称空间ss总是在那里添加前缀。所以它不是默认的命名空间。默认命名空间是html. 所以Font, B,Sup标签不以命名空间为前缀。

但在当前Excel版本中,如果另存为Office 2003 SpreadsheetML,则默认命名空间设置xmlns="urn:schemas-microsoft-com:office:spreadsheet"ss. 因此,如果要使用html标签,则必须以 . 为前缀html

例子:

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook 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:html="http://www.w3.org/TR/REC-html40">

 <Worksheet ss:Name="Tabelle1">
  <Table>
   <Row>
    <Cell><Data ss:Type="String"><html:Font x:Color="#FF0000">Test</html:Font></Data></Cell>
    <Cell><Data ss:Type="String"><html:B>E = m c <html:Sup>2</html:Sup></html:B></Data></Cell>
   </Row>
  </Table>
 </Worksheet>

</Workbook>

另一种选择是将默认命名空间更改xmlns="http://www.w3.org/TR/REC-html40"html. 然后html标签不需要前缀,htmlss标签必须。

例子:

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<ss:Workbook xmlns="http://www.w3.org/TR/REC-html40"
 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:html="http://www.w3.org/TR/REC-html40">

 <ss:Worksheet ss:Name="Tabelle1">
  <ss:Table>
   <ss:Row>
    <ss:Cell><ss:Data ss:Type="String"><Font x:Color="#FF0000">Test</Font></Data></Cell>
    <ss:Cell><ss:Data ss:Type="String"><B>E = m c <Sup>2</Sup></B></Data></Cell>
   </ss:Row>
  </ss:Table>
 </ss:Worksheet>

</ss:Workbook>
于 2018-03-13T07:37:35.523 回答