Rax*_*ati 8 c# spreadsheetml openxml-sdk
任何人都可以解释OpenXml中的样式索引如何工作?我有业务需求,我需要将背景颜色应用于Excel工作表中的某些单元格.并且某些样式已经应用于其他单元格.所以我需要决定我需要应用哪种样式的索引.
Tat*_*ead 12
第一眼看它时,OpenXML样式可能会让人感到困惑.Excel文档样式属于SpreadsheetML标记语言,这与Word和PowerPoint不同.
对于Excel中的典型单元格,所需的唯一样式信息是StyleIndex(如您所指出的).
Cell cell16 = new Cell(){ CellReference = "HU1", StyleIndex = (UInt32Value)1U, DataType = CellValues.SharedString };
Run Code Online (Sandbox Code Playgroud)
这对应于XML中的s属性:
<x:c r="HU1" s="1" t="s">
<x:v>0</x:v>
</x:c>
Run Code Online (Sandbox Code Playgroud)
这StyleIndex是CellFormat样式部分中记录的从零开始的索引.
样式部分(也称为工作簿的样式表)包含以下部分:
现在在CellFormat记录中,有一些引用可以引用回样式表中的以下每个部分:
代码中的示例单元格格式如下所示:
// this line is important to your question
CellFormat cellFormat5 = new CellFormat(){ NumberFormatId = (UInt32Value)0U, FontId = (UInt32Value)0U, FillId = (UInt32Value)0U, BorderId = (UInt32Value)11U,
//the rest of the CellFormat definition is not so important to your question
FormatId = (UInt32Value)0U, ApplyFill = true, ApplyBorder = true, ApplyAlignment = true };
Run Code Online (Sandbox Code Playgroud)
要回答您的问题: 将某种背景颜色应用于某些细胞.让我们说,我们要更新单元B3电子表格,并B3已经拥有StyleIndex的10.
您需要按照以下步骤操作:
步骤1.如果这是电子表格的新背景颜色,请将背景(aka Fill)添加到Fills包含新颜色的样式表(上面的第三个项目符号)部分.如果颜色已存在,则需要查找并记住该Fill颜色的现有索引.无论哪种方式,对于这个例子,我们可以说Fill你需要的索引是25.
步骤2.创建一个新CellFormat的CellFormatat索引的副本10.您将在本节CellFormat末尾添加此新CellFormat内容.让我们说新的索引CellFormat将是53.
步骤3.更新CellFormatat索引53并使其Fill索引属性为25(从步骤1开始).
最后一步:更新有问题的Cell B3,获得一个新StyleIndex的53
注意:此答案适用于Excel中的非表格单元格样式 - 如果您需要表格单元格的样式信息,请回复并尝试更新或添加答案.
这个答案主要来自我的经验以及对免费电子书第73-79页的解释:Open XML - 标记解释 - 由Wouter van Vugt撰写.它是用于所有OpenXml的很好的参考.
| 归档时间: |
|
| 查看次数: |
8546 次 |
| 最近记录: |