2011-09-02 27 views
1

我試圖將查詢結果集導出到Excel工作表中。我需要運行8個查詢,其中每個查詢都將是Excel文件中的一個不同的表單。我還需要在表格中添加一些格式(添加標題,使報告看起來不錯等)。使用ODP.NET將Oracle數據導出爲Excel文件(使用C Sharp)

目前,我的代碼只是運行一個查詢(因此只有一個數據表)。這需要很長的時間來填寫4000行7列,這是一個小樣本。有沒有更好的方法來做到這一點?非常感謝!

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,它確實你需要什麼沒有自動化,這就是更快,在ASP.NET使用過(自動化不支持那裏)...

+0

是什麼由EPPlus項目使用? http://epplus.codeplex.com/ – coergo

+0

它是相同的文件格式,但它是一個不同的庫...所以:沒有EPPlus不使用MS庫OpenXML 2 – Yahia

相關問題