无法使用OpenXMl单元样式的多个字体

我在样式表中定义了两种不同的字体,但是如果我使用StyleIndex = 1的第二种样式。 我无法打开生成的电子表格。 任何帮助将不胜感激

我的代码

Private Function GenerateStyleSheet() As Stylesheet Dim ss As Stylesheet = New Stylesheet() Dim fonts1 As Fonts = New Fonts() Dim f1 As Font = New Font() Dim f1Size As FontSize = New FontSize() f1Size.Val = 11D f1.Append(f1Size) Dim f2 As Font = New Font() Dim b2 As Bold = New Bold() Dim f2Size As FontSize = New FontSize() f2Size.Val = 11D f2.Append(b2) f2.Append(f2Size) fonts1.Append(f1) fonts1.Append(f2) fonts1.Count = fonts1.ChildElements.Count ss.Append(fonts1) Return ss End Function Function getBoldTextCell(ByVal cell As String, ByRef row As Row, ByVal val As String) As Row Dim refCell As Cell = Nothing Dim newCell As New Cell() newCell.StyleIndex = 1 // 0 works newCell.CellReference = cell row.InsertBefore(newCell, refCell) newCell.CellValue = New CellValue(val) newCell.DataType = New EnumValue(Of CellValues)(CellValues.String) Return (row) End Function 

XML代码:

 <x:row xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> <x:cr="A1" s="0" t="str"> <x:v>Request #</x:v> </x:c> <x:cr="B1" t="str"> <x:v>1</x:v> </x:c> </x:row> 

样式代码:

 <x:fonts count="2" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> <x:font> <x:sz val="11" /> </x:font> <x:font> <x:b /> <x:sz val="11" /> </x:font> </x:fonts> 

你不能像这样定义样式。 您需要创build一个样式与字体,填充,边界,并创build从定义的字体,填充,边框cellformats如下所示。

  // <Fonts> Font font0 = new Font(); // Default font Font font1 = new Font(); // Bold font Bold bold = new Bold(); font1.Append(bold); Fonts fonts = new Fonts(); // <APENDING Fonts> fonts.Append(font0); fonts.Append(font1); // <Fills> Fill fill0 = new Fill(); // Default fill Fills fills = new Fills(); // <APENDING Fills> fills.Append(fill0); // <Borders> Border border0 = new Border(); // Defualt border Borders borders = new Borders(); // <APENDING Borders> borders.Append(border0); // <CellFormats> CellFormat cellformat0 = new CellFormat() { FormatId = 0, FillId = 0, BorderId = 0 }; CellFormat cellformat1 = new CellFormat(new Alignment() { Horizontal HorizontalAlignmentValues.Center, Vertical = VerticalAlignmentValues.Center }) { FontId = 1 }; // <APENDING CellFormats> CellFormats cellformats = new CellFormats(); cellformats.Append(cellformat0); cellformats.Append(cellformat1); // Append FONTS, FILLS , BORDERS & CellFormats to stylesheet <Preserve the ORDER> workbookstylesheet.Append(fonts); workbookstylesheet.Append(fills); workbookstylesheet.Append(borders); workbookstylesheet.Append(cellformats); 

稍后定义单元格时,请添加样式参照

  cell.StyleIndex=0 ; // Default style cell1.StyleIndex=1 ; // Our defined style 1