내 .xlsx 파일에서 "1,000.00"과 같은 10 진수 및 정수를 포맷하려고합니다.
발생 스타일의 코드 :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
으로 변경해도 아무런 영향이 없습니다.