SpreadsheetDocument
ゼロから新しいものを作成する場合、Date
フォーマットを機能させるには、最小限のStylesheet
ものを作成する必要があります。
重要なのは、これらの数行です。
new CellFormat
{
NumberFormatId = 14,
ApplyNumberFormat = true
})
フルStylesheet
クラス:
using (var spreadSheet = SpreadsheetDocument.Create(ms, SpreadsheetDocumentType.Workbook))
{
// Workbook
var workbookPart = spreadSheet.AddWorkbookPart();
workbookPart.Workbook =
new Workbook(new Sheets(new Sheet { Name = "Sheet1", SheetId = (UInt32Value) 1U, Id = "rId1" }));
// Add minimal Stylesheet
var stylesPart = spreadSheet.WorkbookPart.AddNewPart<WorkbookStylesPart>();
stylesPart.Stylesheet = new Stylesheet
{
Fonts = new Fonts(new Font()),
Fills = new Fills(new Fill()),
Borders = new Borders(new Border()),
CellStyleFormats = new CellStyleFormats(new CellFormat()),
CellFormats =
new CellFormats(
new CellFormat(),
new CellFormat
{
NumberFormatId = 14,
ApplyNumberFormat = true
})
};
// Continue creating `WorksheetPart`...
Stylesheet
追加した後、DateTime
フォーマットすることができます:
if (valueType == typeof(DateTime))
{
DateTime date = (DateTime)value;
cell.CellValue = new CellValue(date.ToOADate().ToString(CultureInfo.InvariantCulture));
// "StyleIndex" is "1", because "NumberFormatId=14"
// is in the 2nd item of `CellFormats` array.
cell.StyleIndex = 1;
}
値は、配列またはオブジェクト内のアイテムStyleIndex
の順序に依存することに注意してください。この例では、配列の2番目のアイテムのアイテムです。CellFormat
CellFormats
Stylesheet
NumberFormatId = 14