Стили ячеек обрабатываются в CellFormats
части документа Excel. Вы можете сказать, когда клетка имеет формат, когда вы смотрите на XML и увидеть, что атрибут s
устанавливается на целое число:
<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
списке соответствует форматированию для этой ячейки. Вот XML из CellFormats
, мы надеемся сделать его немного яснее:
<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
или CellFormat
элементов. Мы знаем из атрибута StyleIndex
, что мы хотим, первый индекс (второй элемент) под CellFormats
элемента, который означает, что мы хотим, чтобы это CellFormat
:
<x:xf numFmtId="0" fontId="0" fillId="1" borderId="1" xfId="0" />
Теперь для того, чтобы иметь текст Клетки в поворачиваться вам нужно контролируйте это через CellFormat
. Вот код, который нужно будет использовать для того, чтобы создать CellFormat с вращением 90 градусов:
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++;
}
дубликата HTTP: // StackOverflow .com/вопросы/605966 6/answer/submit? S = 9219459d-a516-4000-9913-d6d5843fecb7? – emd