방법: Excel 범위에서 날짜 값 저장 및 검색
NamedRange 컨트롤이나 네이티브 Excel 범위 개체에 값을 저장하고 검색할 수 있습니다.
적용 대상: 이 항목의 정보는 Excel 2007 및 Excel 2010의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
1900년 1월 1일 또는 그 이후를 나타내는 날짜 값을 Visual Studio의 Office 개발 도구를 사용하여 범위에 저장하는 경우 날짜 값은 OA(OLE 자동화) 형식으로 저장됩니다. OA(OLE 자동화) 형식의 날짜 값을 검색하려면 FromOADate 메서드를 사용해야 합니다. 1900년 1월 1일 이전의 날짜는 문자열로 저장됩니다.
참고
1900년 1월과 2월의 경우에는 Excel 날짜가 OA 날짜와 다릅니다. 1904 날짜 체계 옵션이 선택된 경우에도 차이가 발생합니다. 코드 예제에서는 이러한 차이를 제대로 처리하지 않습니다.
NamedRange 컨트롤 사용
- 이 예제는 문서 수준 사용자 지정을 위한 것입니다. 다음 코드는 ThisWorkbook 클래스가 아닌 시트 클래스에 배치해야 합니다.
명명된 범위에 날짜 값을 저장하려면
A1 셀에 NamedRange 컨트롤을 만듭니다.
Dim NamedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _ Me.Controls.AddNamedRange(Me.Range("A1"), "NamedRange1")
Microsoft.Office.Tools.Excel.NamedRange NamedRange1 = this.Controls.AddNamedRange(this.get_Range("A1", missing), "NamedRange1");
NamedRange1의 값으로 오늘 날짜를 설정합니다.
Dim dt As DateTime = DateTime.Now NamedRange1.Value2 = dt
DateTime dt = DateTime.Now; NamedRange1.Value2 = dt;
명명된 범위에서 날짜 값을 검색하려면
NamedRange1에서 날짜 값을 검색합니다.
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())
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());
네이티브 Excel 범위 사용
네이티브 Excel 범위 개체에 날짜 값을 저장하려면
A1 셀을 나타내는 Range를 만듭니다.
Dim rng As Excel.Range = Me.Application.Range("A1")
Excel.Range rng = this.Application.get_Range("A1", missing);
rng의 값으로 오늘 날짜를 설정합니다.
Dim dt As DateTime = DateTime.Now rng.Value2 = dt
DateTime dt = DateTime.Now; rng.Value2 = dt;
네이티브 Excel 범위 개체에서 날짜 값을 검색하려면
rng에서 날짜 값을 검색합니다.
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())
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());