请注意,CellValues.Date
枚举成员仅在 Microsoft Office 2010 及更高版本中可用(有关详细信息,请参阅MSDN库)。
因此,如果您使用 Microsoft Office 2007 打开包含类型单元格的 Excel 电子表格,CellValues.Date
您将收到错误消息。
此外,类型单元格的值CellValues.Date
必须采用 ISO 8601 格式(请参阅 Office Open XML 第 1 部分规范,第 18.17.4.1 节)。
总结 ISO 8601 格式:
- ISO 8601 中的日期以下列格式表示:
YYYY-MM-DD
.
- 时间以下列格式存储:
hh:mm:ss
.
- 日期和时间使用大写字母 T: 分隔
YYYY-MM-DDThh:mm:ss
。
有关 ISO 8601 格式的更多信息 ( WIKIPEDIA ),请参阅以下文章。
以下代码示例显示了类型单元格的创建CellValues.Date
:
Protected Shared Function CreateCell(columnIndex As Integer, rowIndex As Integer, value As DateTime, styleIndex As Integer) As Cell
Dim cell As Cell = New Cell()
cell.DataType = CellValues.Date
Dim v As CellValue = New CellValue()
v.Text = value.ToString("yyyy-MM-ddThh:mm:ss") ' Use ISO 8601 format for date value
cell.CellReference = "" ' Set cell reference here! E.g. A1
cell.CellValue = v
cell.StyleIndex = styleIndex
Return cell
End Function
Protected Function CreateNumberingFormatForDateCells() As NumberingFormat
Dim numberingFormat As NumberingFormat = New NumberingFormat()
numberingFormat.NumberFormatId = CType(165U, UInt32Value)
numberingFormat.FormatCode = "dd-mm-yyyy"
return numberingFormat
End Function
Protected Function CreateCellFormatForDateCells() As CellFormat
Dim cellFormat As CellFormat = New CellFormat()
cellFormat.NumberFormatId = CType(165U, UInt32Value)
cellFormat.ApplyNumberFormat = true
return cellFormat
End Function
Sub Main()
' ... Code to get/create your workbook
Dim workbookPart As WorkbookPart ...
' Add number format and cell style for date cells.
Dim nf As NumberingFormats = New NumberingFormats()
workbookPart.WorkbookStylesPart.Stylesheet.NumberingFormats = nf
workbookPart.WorkbookStylesPart.Stylesheet.NumberingFormats.Append(CreateNumberingFormatForDateCells());
workbookPart.WorkbookStylesPart.Stylesheet.CellFormats.Append(CreateCellFormatForDateCells());
' Call CreateCell() to create date cells
Dim c As Cell = CreateCell(0,0,DateTime.Now, workbookPart.WorkbookStylesPart.Stylesheet.CellFormats.Count())
' Code to append cell to spreadsheet
End Sub
请注意,通过将单元格类型设置为CellValues.Date
我们仅指定日期值以 ISO 8601 格式存储。我们仍然需要为日期指定一个显示单元格样式。在上面的示例中,我创建了一个单元格样式(并设置了单元格样式索引),以便告诉 excel 如何显示日期值。