0
我想在我的.xlsx文件中格式爲「1,000.00」的小數和整數。
用於產生樣式表的代碼:C#OpenXML:數字格式不適用
private Stylesheet GenerateStylesheet()
{
//styling and formatting
var cellFormats = new CellFormats();
uint iExcelIndex = 164;
//number formats
var numericFormats = new NumberingFormats();
var nformat4Decimal = new NumberingFormat
{
NumberFormatId = UInt32Value.FromUInt32(iExcelIndex++),
FormatCode = StringValue.FromString("#,##0.00")
};
numericFormats.Append(nformat4Decimal);
//cell formats
var cellFormat = new CellFormat
{
NumberFormatId = nformat4Decimal.NumberFormatId,
FontId = 0,
FillId = 0,
BorderId = 0,
FormatId = 0,
ApplyNumberFormat = BooleanValue.FromBoolean(true)
};
cellFormats.Append(cellFormat);
numericFormats.Count = UInt32Value.FromUInt32((uint)numericFormats.ChildElements.Count);
cellFormats.Count = UInt32Value.FromUInt32((uint)cellFormats.ChildElements.Count);
var stylesheet = new Stylesheet();
stylesheet.Append(numericFormats);
return stylesheet;
}
用於將樣式表應用到文檔的代碼:
WorkbookStylesPart stylesPart = workbookpart.AddNewPart<WorkbookStylesPart>();
stylesPart.Stylesheet = GenerateStylesheet();
stylesPart.Stylesheet.Save();
這是細胞是如何產生的:
var numberCell = new Cell
{
DataType = CellValues.Number,
CellReference = header + index,
CellValue = new CellValue(text),
StyleIndex = 0
};
通過OpenXML的生產率工具,我可以看到數字樣式在那裏,它被「應用」到單元格中。
但作爲預計在孔格開口生成的文檔值時,沒有格式化。
另外,我發現#,##0.00
是ID = 4的默認Excel格式之一。但將NumberFormatId = nformat4Decimal.NumberFormatId
更改爲NumberFormatId = 4
沒有任何影響。