2011-08-30 26 views
6

DocumentFormat.OpenXml.SpreadsheetでOpen XML for Excelを使用すると、テキストの一部のみを太字に設定するにはどうすればよいですか?Open XML SDK:Excelセルの一部をフォーマットする

var cell = new Cell { 
    //DataType = CellValues.InlineString, 
    CellReference = "A" + 1 
}; 

// TODO: Set "bold text" to bold style 
//var inlineString = new InlineString(); 
//inlineString.AppendChild(new Text { Text = "Normal text... bold text..." }); 
//cell.AppendChild(inlineString); 

現在使用されていますが、変更する必要があるコードをコメントアウトしました。

答えて

6

テキストの一部を太字に設定するには、テキストをSharedStringTableに挿入して、セルのデータタイプをで、InlineStringではないようにする必要があります。これにより、CellValueは0,1,2などのようにこのテーブルへの参照になり、より多くの制御が可能になり、インラインストリングが実行されます。あなたが最初に見つけたい、このメソッドを使用するには

 // Creates an SharedStringItem instance and adds its children. 
     public SharedStringItem GenerateSharedStringItem() 
     { 
      SharedStringItem sharedStringItem1 = new SharedStringItem(); 

      Run run1 = new Run(); 
      Text text1 = new Text(){ Space = SpaceProcessingModeValues.Preserve }; 
      text1.Text = "Normal text… "; 

      run1.Append(text1); 

      Run run2 = new Run(); 

      RunProperties runProperties1 = new RunProperties(); 
      Bold bold1 = new Bold(); 
      FontSize fontSize1 = new FontSize(){ Val = 11D }; 
      Color color1 = new Color(){ Theme = (UInt32Value)1U }; 
      RunFont runFont1 = new RunFont(){ Val = "Calibri" }; 
      FontFamily fontFamily1 = new FontFamily(){ Val = 2 }; 
      FontScheme fontScheme1 = new FontScheme(){ Val = FontSchemeValues.Minor }; 

      runProperties1.Append(bold1); 
      runProperties1.Append(fontSize1); 
      runProperties1.Append(color1); 
      runProperties1.Append(runFont1); 
      runProperties1.Append(fontFamily1); 
      runProperties1.Append(fontScheme1); 
      Text text2 = new Text(); 
      text2.Text = "bold text…"; 

      run2.Append(runProperties1); 
      run2.Append(text2); 

      sharedStringItem1.Append(run1); 
      sharedStringItem1.Append(run2); 
      return sharedStringItem1; 
     } 

:ここ

はpharse「通常のテキスト...太字...」太字の第二部を作成する方法についていくつかのサンプルコードですSharedStringTableのインスタンスとそれにあなたの新しいShareStringItemを挿入します。

  using (MemoryStream stream = new MemoryStream()) 
      { 
       // create in-memory copy of the Excel template file 
       byte[] byteArray = File.ReadAllBytes(TEMPLATE_FILE_NAME); 
       stream.Write(byteArray, 0, (int)byteArray.Length); 

       using (SpreadsheetDocument document = SpreadsheetDocument.Open(stream, true)) 
       { 
        // Set private variable template component references (for reuse between methods) 
        mExcelWorkbookPart = document.WorkbookPart; 
        mSharedStringTablePart = mExcelWorkbookPart.SharedStringTablePart; 

        mSharedStringTablePart.SharedStringTable.AppendChild(GenerateSharedStringItem()); 
       } 

       return stream.ToArray(); 
      } 
+0

こんにちはamurra、あなたはhttp://stackoverflow.com/questions/15791732/openxml-sdk-having-borders-for-cellで私を支援することができます。セルに境界があるようにする方法がわからない。ありがとう –

関連する問題