2015-01-28 3 views
0

NPOI를 사용하여 Excel 스프레드 시트를 읽습니다. 코드에서 위에서 언급 한 오류 gettting [ "Amount"] = row.GetCell (4). 누군가가 문제가 무엇인지 말해 줄 수 있습니까?'NPOI.XSSF.UserModel.XSSFCell'유형의 객체를 'System.IConvertible'유형으로 캐스팅 할 수 없습니다.

 XSSFWorkbook xssfwb; 
      using (FileStream file = new FileStream(excelPath, FileMode.Open, FileAccess.Read)) 
      { 
       xssfwb = new XSSFWorkbook(file); 
      } 

      var sheet = xssfwb.GetSheetAt(0); // Change this to the worksheet you want to import. 
      var rows = sheet.GetRowEnumerator(); 
      var dtExcelData = new DataTable(); 
      var linenumber = 0; 
      DataRow dr; 


      dtExcelData.Columns.AddRange(new DataColumn[3] { 
      new DataColumn("AccountNumber", typeof(string)), 
      new DataColumn("Amount", typeof(decimal)), 
      new DataColumn("Sedol",typeof(string)) }); 
     while (rows.MoveNext()) 
     { 
      var row = (XSSFRow)rows.Current; 
      linenumber++; 



    if (row.GetCell(0) != null) 
      { 
       dr = dtExcelData.NewRow(); 
       dr["AccountNumber"] = row.GetCell(1).ToString(); 
       dr["Amount"] = row.GetCell(4); 
       dr["Sedol"] = row.GetCell(11).ToString(); 

       dtExcelData.Rows.Add(dr); 
      } 
     } 
+0

'Amount'가 숫자이고 그 값에 대해 확신하는 이유는'row.GetCell (4) .NumericCellValue'을 사용하지 않는 이유는 무엇입니까? –

+0

나는 오류가 발생합니다. 텍스트 셀에서 숫자 값을 가져올 수 없습니다. – user3751248

+0

다음으로 Number에 셀 형식을 설정할 수 없다면 문자열로 읽고 구문 분석해야합니다 (Shannon에서 제안한 것처럼). 형식은 소수점 구분 기호 (문화 정보가 무엇인지, 시트에 무엇이 있는지 확인) 때문에 올바르지 않을 수 있습니다. –

답변

1

개체를 십진수 필드에 넣으려고하는 것처럼 보입니다. 당신은 당신의 오류를 수정하는 경우

dr["Amount"] = decimal.parse(row.GetCell(4).toString());

보고 시도 할 수 있습니다.

+0

아니요. 입력 문자열의 형식이 올바르지 않습니다. – user3751248

+0

문자열을 구문 분석하거나 10 진수 형식으로 변환 할 수있는 값입니까? 'Convert.ToDecimal (문자열) 또는 Convert.ToDecimal (문자열, 문화)'시도해보십시오. – Shannon

관련 문제