I am trying to write some code to generate an Excel spreadsheet and I am not sure what the difference between CellValues.InlineString and CellValues.String to insert text on the cells.
Shall I use this:
private void UpdateCellTextValue(Cell cell,string cellValue)
{
InlineString inlineString = new InlineString();
Text cellValueText = new Text { Text = cellValue };
inlineString.AppendChild(cellValueText);
cell.DataType = CellValues.InlineString;
cell.AppendChild(inlineString);
}
this
private void UpdateCellTextValue(Cell cell, string cellValue)
{
cell.CellValue = new CellValue(cellValue);
cell.DataType = new EnumValue<CellValues>(CellValues.String);
}
or just this (InsertSharedStringItem returns the Id of the newly inserted shared string item)
private void SetCellSharedTextValue(Cell cell,string cellValue)
{
int stringId = InsertSharedStringItem(cellValue);
cell.CellValue = new CellValue(stringId.ToString());
cell.DataType = new EnumValue<CellValues>(CellValues.SharedString);
}
According to the documentation at 18.18.11 ST_CellType:
You will only want to use the CellValues.String when you are inserting a formula in the cell. Here is how the XML should look:
CellValues.InlineStringshould only be used if you don’t want to store the string in theSharedStringTable. Then anything you mark as aninlineStringwill be treated as rich text. Although note that when you useCellValues.InlineStringthat your text must be surounded by a text element and<is>tag: