4

나는각 항목을 반복하지 않고 지그재그 배열을 2D 배열로 직접 변환 하시겠습니까?

Excel.Range range = xlWorkSheet.get_Range("A2"); 
range = range.get_Resize(dtExcel.Rows.Count, dtExcel.Columns.Count); 
object[,] rng1 = new object[dtExcel.Rows.Count, dtExcel.Columns.Count]; 

엑셀 범위를 배열로 범위 값 [,]이 필요합니다 .. 내 코드는 다음과 같다 .. 엑셀 시트에 DataTable을 저장하려고하지만 난과 DataTable에있는 가변 배열 [] [ ].

object[][] rng2 = dtExcel.AsEnumerable().Select(x => x.ItemArray).ToArray(); 

가변 배열 [] []을 2D 배열 [] []로 직접 변환하는 내장 함수가 있습니까? 엑셀을 반복은 DataTable을하고 할당 대량 데이터 속도가 느린 것 같습니다 ..

또한

내가 어떤 데이터베이스의 구성을 피하기 위해 엑셀 저장을 선택했다 .. 엑셀에 대한 DSN으로 쿼리 설치하지 않으려는 .. : P 여기에 데이터를 쓰는 방법에 대한 자세한 설명을 보았습니다. http://support.microsoft.com/kb/306023

+0

http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/5d525b76-f5b6-4340-a899-c3c82570d2e1 답장을 보내 –

+0

감사합니다 도움이 될 수 있습니다 .. 배열 유형이 다르다 내 경우. 하지만 시도해 보자. –

+0

'지정된 배열은 같은 차원을 가져야한다.'라는 예외가있다. 들쭉날쭉 한 배열 크기는 [80] []로 표시되고 배열 크기는 [80,12]로 표시됩니다. 들쭉날쭉 한 배열은 각 행에 12 개의 항목이 있지만 여전히 동일한 차원의 배열로 검색하지 않았습니다. –

답변

0

마침내 나는 NPOI library을 사용했습니다. 그것은 아주 간단하고 무료입니다. DataTable을 Excel로 변환하는 코드는 다음과 같습니다.

HSSFWorkbook hssfworkbook = new HSSFWorkbook(); 
     foreach (DataTable dt in DataSource.Tables) 
     { 
      ISheet sheet1 = hssfworkbook.CreateSheet(dt.TableName); 

      //Set column titles 
      IRow headRow = sheet1.CreateRow(0); 
      for (int colNum = 0; colNum < dt.Columns.Count; colNum++) 
      { 
       ICell cell = headRow.CreateCell(colNum); 
       cell.SetCellValue(dt.Columns[colNum].ColumnName); 
      } 

      //Set values in cells 
      for (int rowNum = 1; rowNum <= dt.Rows.Count; rowNum++) 
      { 
       IRow row = sheet1.CreateRow(rowNum); 
       for (int colNum = 0; colNum < dt.Columns.Count; colNum++) 
       { 
        ICell cell = row.CreateCell(colNum); 
        cell.SetCellValue(dt.Rows[rowNum - 1][colNum].ToString()); 
       } 
      } 

      // Resize column width to show all data 
      for (int colNum = 0; colNum < dt.Columns.Count; colNum++) 
      { 
       sheet1.AutoSizeColumn(colNum); 
      } 
     }