2017-10-11 30 views
0

大きなエクセルファイルを生成していますが、データの見出しを太字にしています。Excel Styles.xmlの外観 - OpenXML

CellFormatコードをすべてコメントアウトしてスプレッドシートを作成するとファイルが正しく作成されますが、コメントアウトしないとエラーが表示されます。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> 

何をしていますコード、またはcellFormatを使用するためには何を変更する必要がありますか。

私はどのように大胆なセルと、私はここにこのチュートリアルを次されている上、インターネット上の多くの例を見てきました

:私はここでの問題は、それがあなたのセル内にあると思い

https://social.msdn.microsoft.com/Forums/windows/en-US/4ae9ba85-d5d2-4ce8-a0ba-dece26ed7d2a/open-xml-sdk-for-making-font-bold?forum=oxmlsdk

答えて

1

フォーマットでは、FillId = 0で塗りつぶしを参照し、BorderId = 0で境界を参照しています。ここにスタイルシートを再作成したので、

stylePart.Stylesheet = New Stylesheet 

このような塗りつぶしや罫線はドキュメントにありません。 あなたはそのための2つのソリューションを持っている:あなたが追加しているだけのように、基本的な塗りつぶし(白背景)と基本的な境界線(無 ボーダー)オブジェクトを作成し、セル フォーマットを追加する前に、あなたのスタイルシートに追加します

  1. をフォント。
  2. BorderおよびFillへの参照をCellFormatの定義から削除してみてください。おそらくそれはうまくいくでしょう。

次の例では、既存のExcelファイルを使用していたため、スタイルシートに特定の枠線や塗りつぶしが格納されている可能性があります。