2011-09-02 3 views
1

Excel 결과 세트를 Excel 시트로 내보내려고합니다. 8 개의 쿼리를 실행해야하는데, 각 쿼리는 Excel 파일에서 다른 시트가됩니다. 또한 시트 주위에 약간의 서식을 추가해야합니다 (헤더를 추가하고 보고서를 멋지게 보이게하는 등).ODP.NET을 사용하여 Oracle Data를 C Sharp를 사용하여 Excel 파일로 내 보냅니다.

현재 내 코드는 단일 쿼리 만 실행하고 있습니다 (단 하나의 데이터 시트). 이것은 7 열로 4000 행을 채우기 위해 오랜 시간이 걸리고 아주 작은 샘플입니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? 정말 고마워!

Excel.Application xlApp; 
     Excel.Workbook xlWorkBook; 
     Excel.Worksheet xlWorkSheet; 
     object misValue = System.Reflection.Missing.Value; 
     string data = null; 
     int i = 0; 
     int j = 0; 

     xlApp = new Excel.ApplicationClass(); 
     xlWorkBook = xlApp.Workbooks.Add(misValue); 
     xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

     string cs = "oracle connection string filtered for online posting"; 

     DataSet ds = new DataSet(); 

     OracleConnection oconn = new OracleConnection(cs); 
     oconn.Open(); 
     Model_Netstat netstat = new Model_Netstat(); 
     OracleCommand oc = new OracleCommand(netstat.queryNetstatAll(session.caseName), oconn); 
     oc.CommandType = CommandType.Text; 

     OracleDataAdapter oda = new OracleDataAdapter(oc); 
     try 
     { 

      oda.Fill(ds); 
     } catch(Exception ex) 
     { 
      Console.Write(ex.Message); 
     } 

     for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++) 
     { 
      for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++) 
      { 
       data = ds.Tables[0].Rows[i].ItemArray[j].ToString(); 
       xlWorkSheet.Cells[i + 1, j + 1] = data; 
      } 
     } 

     xlWorkBook.SaveAs("test.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
     xlWorkBook.Close(true, misValue, misValue); 
     xlApp.Quit(); 

     releaseObject(xlWorkSheet); 
     releaseObject(xlWorkBook); 
     releaseObject(xlApp); 

답변

1

확인 마이크로 소프트 아웃에서 무료 OpenXML SDK 2, 그것은

+0

이 있다는 것입니다 ... 당신이 자동화없이 필요하고 훨씬 빠르게 무엇을 수행하고 ASP.NET에서 사용할 수있는도 (자동화가가 지원되지 않음)이 무엇인지 EPPlus 프로젝트에서 사용됩니까? http://epplus.codeplex.com/ – coergo

+0

동일한 파일 형식이지만 다른 라이브러리입니다 ... 그래서 : EPPlus는 MS 라이브러리 OpenXML 2를 사용하지 않습니다 – Yahia

관련 문제