可以在控件或本机 Excel 范围对象中 NamedRange 存储和检索值。
适用于: 本主题中的信息适用于 Excel 的文档级项目和 VSTO 外接程序项目。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。
如果使用 Visual Studio 中的办公室开发工具将日期值存储在 1/1/1/1900 之后,则它以 OLE 自动化(OA)格式存储。 必须使用 FromOADate 该方法检索 OLE 自动化 (OA) 日期的值。 如果日期早于 1900/1/1,则它存储为字符串。
注意
Excel 日期与 1900 年头两个月的 OLE 自动化日期不同。 如果检查 1904 日期系统选项,也存在差异。 下面的代码示例无法解决这些差异。
使用 NamedRange 控件
- 此示例适用于文档级自定义。 以下代码必须放在工作表类中,而不是放在类中
ThisWorkbook
。
将日期值存储在命名区域中
在 NamedRange 单元格 A1 上创建控件。
Microsoft.Office.Tools.Excel.NamedRange NamedRange1 =
this.Controls.AddNamedRange(this.get_Range("A1"), "NamedRange1");
Dim NamedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _
Me.Controls.AddNamedRange(Me.Range("A1"), "NamedRange1")
将今天的日期设置为值 NamedRange1
。
DateTime dt = DateTime.Now;
NamedRange1.Value2 = dt;
Dim dt As DateTime = DateTime.Now
NamedRange1.Value2 = dt
从命名区域检索日期值
从 NamedRange1
中检索日期值。
object value = NamedRange1.Value2;
if (value != null)
{
if (value is double)
{
dt = DateTime.FromOADate((double)value);
}
else
{
DateTime.TryParse((string)value, out dt);
}
}
MessageBox.Show(dt.ToString());
Dim value As Object = NamedRange1.Value2
If Not value Is Nothing Then
If TypeOf value Is Double Then
dt = DateTime.FromOADate(CType(value, Double))
Else
DateTime.TryParse(CType(value, String), dt)
End If
End If
MessageBox.Show(dt.ToString())
使用本机 Excel 范围
在本机 Excel 范围对象中存储日期值
创建一个Range表示单元格 A1 的单元格。
Excel.Range rng = this.Application.get_Range("A1");
Dim rng As Excel.Range = Me.Application.Range("A1")
将今天的日期设置为值 rng
。
DateTime dt = DateTime.Now;
rng.Value2 = dt;
Dim dt As DateTime = DateTime.Now
rng.Value2 = dt
从本机 Excel 范围对象检索日期值
从 rng
中检索日期值。
object value = rng.Value2;
if (value != null)
{
if (value is double)
{
dt = DateTime.FromOADate((double)value);
}
else
{
DateTime.TryParse((string)value, out dt);
}
}
System.Windows.Forms.MessageBox.Show(dt.ToString());
Dim value As Object = rng.Value2
If Not value Is Nothing Then
If TypeOf value Is Double Then
dt = DateTime.FromOADate(CType(value, Double))
Else
DateTime.TryParse(CType(value, String), dt)
End If
End If
System.Windows.Forms.MessageBox.Show(dt.ToString())
相关内容