2013-08-09 4 views
0

내부적으로 생성 된 Excel 가져 오기 도구로 작업하고 있습니다. 이 도구는 Excel 스프레드 시트를 읽고 그 결과를 SQL CE 데이터베이스로 가져와야합니다. 데이터베이스를 확인한 후 문제를 디버깅 한 후에 엑셀 스프레드 시트에서 값을 얻습니다. 내 문제는 반환 된 결과가 잘리는 것입니다.System.Data.OleDb.OleDbConnection ExecuteReader() 결과가 잘린다

"Here"로 표시된 주석에서 내 코드를 검사 할 때 rdr.GetValue (col) .ToString()이 이미 잘 렸습니다. 나는 세포의 전체 가치를 얻기 위해 다르게해야 할 일이 있는지 궁금합니다.

<h1><span style="color:blue; margin: 10, 10, 10, 10; font-family:Arial;">You can drive 
or walk on main street… Sometimes… When we allow it. Lalalalalalla lalallala lalalalal 
lalallalal allalalalalla lalallalalalalal alalallasldlal dldlaldsls dldlldl 
laldfolafjlkmn oiasfjadlfjalkfj lkajdflidja laisdjfolieanfldsn ladllaldladsl 
aldllselasldeesl dfoaihfneal adfajlkfmf alsiej</span></h1> 

이 잘립니다 것입니다 :

using (var cmd = _xlConn.CreateCommand()) 
{ 
    cmd.CommandText = "SELECT * FROM [" + entityType.Name + "$]"; 

    try 
    { 
     using (var rdr = cmd.ExecuteReader()) 
     { 
      while (rdr.Read()) 
      { 
       if (!rdr.IsDBNull(0)) 
       { 
        var id = Convert.ToInt32(rdr.GetValue(0)); 
        var eid = Entity.InsertRecord(entityType.Name + "_" + id, entityType.ID, true); 

        map.Add(id, eid); 

        int col = 0; 

        foreach (var entityKey in _entityKeys.Where(ek => ek.EntityType_Fk == entityType.ID)) 
        { 
         if (!rdr.IsDBNull(++col)) 
         { 
          //------------------------- 
          //--------- HERE ---------- 
          //------------------------- 
          EntityKeyData.InsertRecord(eid, entityKey.ID, rdr.GetValue(col).ToString()); 
         } 
        } 
       } 
      } 
     } 
    } 
} 

이것은 내 데이터에 전달되는

<h1><span style="color:blue; margin: 10, 10, 10, 10; font-family:Arial;">You can drive 
or walk on main street… Sometimes… When we allow it. Lalalalalalla lalallala lalalalal 
lalallalal allalalalalla lalallalalalalal alalallasldlal dldlaldsls dldlldl laldf 

내가 문자가 잘린 텍스트에 의지 않았고 그것은 255 인 끝 이것은 일반적인 문제입니까?

+3

[Excel 셀 값이 OleDb 공급자에 의해 잘리는] 가능한 복제본 (http://stackoverflow.com/questions/898513/excel-cell-values-are-truncated-by-oledb-provider) – JeremiahDotNet

+0

SQL 필드가 있습니까? 충분히 길다? –

답변

0

위에 게시 된 링크를 통해 도움을 얻을 수있었습니다. 필자는 Excel을 내 소스로 사용하고 있기 때문에 리더는 각 열에 데이터 길이를 부여하기 위해 첫 번째 열 집합을 살펴볼 것입니다. 기본값이 아닌 경우 기본값은 255입니다. 이 문제를 해결할 수있는 방법은 첫 번째 데이터 행을 더미 행으로 사용하고 매우 긴 행의 열에서 긴 문자열을 추가하는 것입니다.