私の.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形式の1つですが、NumberFormatId = nformat4Decimal.NumberFormatId
をNumberFormatId = 4
に変更しても影響はありません。