我正在生成一个大的excel文件,我正在努力使数据的标题变为粗体。
如果我注释掉所有CellFormat
代码并创建电子表格,那么该文件会正确创建,但如果我不对这些行进行评论,那么excel会给我一个错误:Repaired Records: Format from /xl/styles.xml
。 (显然我点击了Yes
来修复文件。)
这就是我的代码:
Public Function Create_Spreadsheet_Stylesheet(ByRef stylePart As WorkbookStylesPart) As WorkbookStylesPart
Dim font1Id As UInt32Value,
font2Id As UInt32Value
Dim font1 As New Font With {
.FontName = New FontName With {.Val = "arial"},
.FontSize = New FontSize With {.Val = 9}
}
Dim font2 As New Font With {
.Bold = New Bold,
.FontName = New FontName With {.Val = "arial"},
.FontSize = New FontSize With {.Val = 9}
}
stylePart.Stylesheet = New Stylesheet
stylePart.Stylesheet.Fonts = New Fonts
stylePart.Stylesheet.Fonts.Append(font1)
font1Id = Convert.ToUInt32(stylePart.Stylesheet.Fonts.ChildElements.Count - 1)
stylePart.Stylesheet.Fonts.Append(font2)
font2Id = Convert.ToUInt32(stylePart.Stylesheet.Fonts.ChildElements.Count - 1)
stylePart.Stylesheet.Save()
Dim cf1 As New CellFormat() With {
.FontId = font1Id,
.FillId = 0,
.BorderId = 0
}
Dim cf2 As New CellFormat() With {
.FontId = font2Id,
.FillId = 0,
.BorderId = 0
}
stylePart.Stylesheet.CellFormats = New CellFormats ' I would comment this line out
stylePart.Stylesheet.CellFormats.Append(cf1) ' And this one
stylePart.Stylesheet.CellFormats.Append(cf2) ' And this one
stylePart.Stylesheet.Save()
Return stylePart
End Function
styles.xml
看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<x:styleSheet xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:fonts>
<x:font>
<x:sz val="9" />
<x:name val="arial" />
</x:font>
<x:font>
<x:b />
<x:sz val="9" />
<x:name val="arial" />
</x:font>
</x:fonts>
<x:cellXfs>
<x:xf fontId="0" fillId="0" borderId="0" />
<x:xf fontId="1" fillId="0" borderId="0" />
</x:cellXfs>
</x:styleSheet>
我在编写代码时遇到了什么问题,或者为了使excel使用cellFormat我必须做些什么改变。
我已经在互联网上看了很多关于如何加粗单元格的例子,我在这里一直关注这个教程:
答案 0 :(得分:1)
我认为这里的问题是,在您的单元格格式中,您引用的是填充FillId = 0
和边框BorderId = 0
。由于您在此处重新创建了样式表:
stylePart.Stylesheet = New Stylesheet
您的文档中没有此类填充或边框。 你有两个解决方案:
请注意,在您关注的示例中,他们使用的是现有的excel文件,该文件可能在其样式表中存储了某些边框和填充,因此他们不必这样做。