2013-07-29 4 views
0

Microsoft.Office.Interop.Excel을 사용하여 Excel 스프레드 시트를 업로드했습니다. 내 데이터 집합에 삽입하기 위해 날짜 값이있는 셀을 읽으려고하면 해당 날짜가 날짜로 인식되지 않고 임의의 숫자로 표시됩니까? 이 내가 셀을 참조하는 방법입니다C# 스프레드 시트에서 날짜를 Excel에서 읽을 수 없습니다.

Excel.Range startDate = objsheet.get_Range("C1:C" + lastUsedRow, System.Type.Missing); 
double dbl = Convert.ToDouble(startDate); 
DateTime conv = DateTime.FromOADate(dbl); 
(row[3] = ((Microsoft.Office.Interop.Excel.Range)objsheet.Cells[rowIndex, 4]).Value2;) 
+0

결과를 표시 하시겠습니까? 또한 : value2 대신 .Value를 사용하십시오. – Recipe

+0

날짜 형식을 확인할 수 있도록 Excel 파일의 일부를 게시하십시오. – wudzik

답변

2

You need to convert the date format from OLE Automation to the .net format by using DateTime.FromOADate.

double d = double.Parse(b); 
DateTime conv = DateTime.FromOADate(d); 

https://stackoverflow.com/a/4538367/1397117에서이 그리고 내가 대신 .Value2.Value를 사용하는 그 대답은 아래의 제안을 에코.

+0

b로 무엇을 전달해야합니까? 범위? 오류가 발생 했습니까? – user2140832

+0

나는 그것을 이해할 수없는 것 같은데 ... 나는 그런 오류가 발생한다 : 'System.__ ComObject'유형의 COM 객체를 'System.IConvertible'인터페이스 유형으로 형 변환 할 수 없다. 다음 오류로 인해 IID '{805E3B62-B5E9-393D-8941-377D8BF4556B}'인터페이스의 COM 구성 요소에서 QueryInterface 호출이 실패했기 때문에이 작업이 실패했습니다. 해당 인터페이스가 지원되지 않습니다 (HRESULT : 0x80004002 (E_NOINTERFACE 예외)). . – user2140832

0
row[3] = Convert.ToDateTime(((Microsoft.Office.Interop.Excel.Range)objsheet.Cells[rowIndex, 4]).Value2.ToString()); 

당신을 위해 그것을 할 수 있습니다,이 lin K를 참조하십시오.

0

내 프로젝트에서 Excel에서 데이터를 읽어야 할 때 셀 텍스트를 입력으로 사용하고 C# DateTime을 출력으로 사용하는 메서드를 만들었습니다.

public DateTime ReadDateFromExcel(string dateFromXL) 
{ 
    Regex dateRegex = new Regex("^([1-9]|0[1-9]|1[0-2])[-/.]([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])[-/.](1[9][0-9][0-9]|2[0][0-9][0-9])$"); 
    DateTime dtParam = new DateTime();    
    if (!DateTime.TryParse(dateFromXL, out dtParam)) 
    { 
     double oaDate = 0; 
     if (Double.TryParse(dateFromXL, out oaDate)) 
     { 
      dateFromXL = DateTime.FromOADate(oaDate).ToString("MM/dd/yyyy"); 
      if (!dateRegex.IsMatch(dateFromXL)) 
      { 
       Console.Writeline("Date not in correct format"); 
      } 
      else 
      { 
       dtParam = readDateFromExcel(dateFromXL); 
      } 
     } 
     else 
     { 
      Console.Writeline("Date not in correct format"); 
     } 
    } 
    else 
    { 
     Console.Writeline("Date is in correct format"); 
    } 
    return dtParam; 
} 
관련 문제