单元格的样式在CellFormats
Excel 文档的部分中处理。s
当您查看 XML 并看到属性设置为整数时,您可以判断单元格何时具有格式:
<x:c r="A1" s="1" t="s" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:v>0</x:v>
</x:c>
该属性代表列表中与此单元格的格式相对应StyleIndex
的CellFormat
索引。CellFormats
这是CellFormats
希望使它更清晰一点的 XML:
<x:cellXfs count="2" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" />
<x:xf numFmtId="0" fontId="0" fillId="1" borderId="1" xfId="0" />
</x:cellXfs>
在上面的 XML 中,我们有一个x:cellXfs
元素,它是CellFormats
元素,它有两个子元素x:xf
or CellFormat
。我们从StyleIndex
属性中知道我们想要元素下的第一个索引(或第二个元素)CellFormats
,这意味着我们想要这个CellFormat
:
<x:xf numFmtId="0" fontId="0" fillId="1" borderId="1" xfId="0" />
现在,为了旋转单元格的文本,您需要通过CellFormat
. 以下是创建 90 度旋转的 CellFormat 所需的代码:
public CellFormat GenerateCellFormat()
{
CellFormat cellFormat1 = new CellFormat(){ NumberFormatId = (UInt32Value)0U, FontId = (UInt32Value)0U, FillId = (UInt32Value)0U, BorderId = (UInt32Value)0U, FormatId = (UInt32Value)0U, ApplyAlignment = true };
Alignment alignment1 = new Alignment(){ TextRotation = (UInt32Value)90U };
cellFormat1.Append(alignment1);
return cellFormat1;
}
如果您希望文本以不同的角度旋转,那么只需将 90U 替换为您想要的从 -90 到 90 的任何角度。
现在您需要将其插入CellFormat
到 中CellFormats
,然后在StyleIndex
要旋转的单元格上设置新索引:
Cell cell = GetCell(worksheetPart.Worksheet, columnName, rowIndex);
cell.StyleIndex = InsertCellFormat(workbookPart, GenerateCellFormat());
// Helper method to insert the cell format in the CellFormats
public static uint InsertCellFormat(WorkbookPart workbookPart, CellFormat cellFormat)
{
CellFormats cellFormats = workbookPart.WorkbookStylesPart.Stylesheet.Elements<CellFormats>().First();
cellFormats.Append(cellFormat);
return (uint)cellFormats.Count++;
}