2009-04-21 7 views
3

현재 날짜 형식의 열 중 하나가있는 Excel 시트가 있습니다. 내가 스프레드 시트를 열 때 내가 볼 무엇Excel 날짜 필드 변환 문제

는 12/29/09 같은 내가 알아 낸 나는 일반 텍스트 열을 변경할 때이 값 존재 40176.

프로그램을 본다.

내 질문은 입니다. 어떻게 40176 대신 값을 읽을 수 있습니까? 아니면 40176을 유효한 날짜로 변경하려면 어떻게합니까?

내 프로그램은 C#에서이다는 C#에서 읽을 수 있어야합니다


이 어떤 도움이된다면 여기 내 연결의 샘플 코드입니다.

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); 
string myPath = @"C:\Test.xls"; 
excelApp.Workbooks.Open(myPath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "t", false, false, 0, true, 1, 0); 

Microsoft.Office.Interop.Excel.Sheets sheets = excelApp.Worksheets; 
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1); 
excelApp.Visible = true; 

if(((Microsoft.Office.Interop.Excel.Range)excelApp.Cells[r, 1]).Value2 != null) 
    DateString = ((Microsoft.Office.Interop.Excel.Range)excelApp.Cells[r, 1]).Value2.ToString(); 
+1

은 어떻게 열고 스프레드 시트를 읽고 작동하지 않을 수 있습니다? Interop? –

답변

12

당신은 날짜 시간 값으로 이중 변환 DateTime.FromOADate()를 사용할 수 있습니다.

+1

코리와 나는 너에게 모두 맥주 빚이있다 :) –

2

Reed Copsey가 말한대로 DateTime.FromOADate() 메서드는 값을 DateTime으로 변환합니다. 그러나 12/29/09를 문자열로 사용하고 더 이상 조작하지 않으려면 cell.Text을 대신 사용할 수 있습니다.

+0

네, 4 년 후 ... 그리고 여전히 내 하루를 만들었 어! : D 이것은 대답이어야합니다. 이 경우에는 "FromOADate()"를 사용하면 안됩니다.필요시 언제든지 U를 다시 datetime으로 캐스팅 할 수 있습니다. –

1

엑셀 TEXT(val,format) 기능을 사용하십시오.

예 : 셀 A2에서

=today()를 입력하고 당신이 =TEXT(today(),"mm/dd/yyyy")를 입력하면 A2는

당신이 오늘 날짜가 텍스트로 서식거야 셀에 입력하면 당신은 40,189 같은 번호를 얻을 것이다 그리고 "01/30/2012"

0

과 같이 표시되며 텍스트 기능을 사용할 수 있습니다.

내가 엑셀 ​​A2 2)에서 40,176 넣어

1) 구문

Text(Value,FormatText) 

예 그럼에

=TEXT(A2,"mm/dd/yy") 

아래 식을에 refrence A3

값은 12/29/09입니다. 당신이

주의

질문처럼 : 대신 큰 따옴표의 작은 따옴표를 넣으면

를이