13

i have try to make bold the specific text using

 Bold fbld = new Bold(); 

but it will make bold hall cell.

enter image description here

Here in above image there is some bold text into the cell.

How can I do this in OpenXml using C#?

2 Answers 2

31

You need to use separate Run elements for the differently styled pieces of text. You can add the bold by creating a RunProperties element and adding a Bold element to that.

The following code will work on an existing spreadsheet that has no rows (note I haven't added the code for merging as that just adds complication - if you need help with that then please see my answer here)

using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(filename, true)) { WorkbookPart workBookPart = spreadsheetDocument.WorkbookPart; WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.First(); SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); //create a row Row row1 = new Row() { RowIndex = 1U }; //create a new inline string cell Cell cell = new Cell() { CellReference = "A1" }; cell.DataType = CellValues.InlineString; //create a run for the bold text Run run1 = new Run(); run1.Append(new Text("ABC")); //create runproperties and append a "Bold" to them RunProperties run1Properties = new RunProperties(); run1Properties.Append(new Bold()); //set the first runs RunProperties to the RunProperties containing the bold run1.RunProperties = run1Properties; //create a second run for the non-bold text Run run2 = new Run(); run2.Append(new Text(Environment.NewLine + "XYZ") { Space = SpaceProcessingModeValues.Preserve }); //create a new inline string and append both runs InlineString inlineString = new InlineString(); inlineString.Append(run1); inlineString.Append(run2); //append the inlineString to the cell. cell.Append(inlineString); //append the cell to the row row1.Append(cell); sheetData.Append(row1); } 
Sign up to request clarification or add additional context in comments.

2 Comments

This code works. BUT its causing my excel file to produce a warning regarding Cellinformation. Any idea how to solve that?
What's the warning?
2

A bit late, but I hope this can be useful to someone reading :) In general, remember that OpenXml files (xlsx, ppt, word) are only zip files with inside all separated xml files. When I need something to do I use this workflow:

  • Create an excel file with some sample data and save
  • Copy it, and apply what you want to do, for example a cell to bold, and save
  • Rename both files to .zip and extract them to folders
  • Compare diff between folder, I usually use WinMerge for this

Doing like this you can see what has changed when you make a cell to bold, and apply it by code. It's not a very fast approach, but it works

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.