2016-10-22 74 views
-1

我需要幫助。我應該如何將表中的每一行寫入Excel文件?將OracleDataReader寫入excel C#.net

問題1:我如何獲得OracleDataReader的每個單元格或每行的值?

問題#2:表格中的列數可能有所不同。我應該閱讀每個單元格並將其寫入Excel或按行嗎?

代碼:

try    
{ 
    string connectionString = ConfigurationManager.ConnectionStrings["OracleConnectionString"].ConnectionString; 

    OracleConnection connection = new OracleConnection(); 
    connection.Open(); 

    if(connection.ToString().Equals("Open")) 
    { 
     OracleCommand cmd = new OracleCommand(); 
     cmd.Connection = connection; 

     cmd.Parameters.Add (dict_name); 

     cmd.CommandText = "SELECT * from :dict_name"; 
     cmd.CommandType = CommandType.Text; 

     OracleDataReader dataReader = cmd.ExecuteReader(); 

     while (dataReader.Read()) 
     { 
     } 
    } 

    connection.Close(); 
} 
catch (OracleException e) 
{ 
    if (e.ErrorCode != 2000) 
    { 
     Console.WriteLine("Oracle Error -> {0} {1}", DateTime.Now.ToString("dd mm yyyy HH:mm:ss"), e.StackTrace); 
    } 
} 
catch (Exception e) 
{ 
    Console.WriteLine("Erorr -> {0} {1}", DateTime.Now.ToString("dd mm yyyy HH:mm:ss"), e.StackTrace); 
} 
+0

是:dict_name應該是表的名字?由於參數不能用於表示表或字段的名稱,所以這不起作用 – Steve

+0

@steve該參數將來自外部,並帶有http響應。 – TheOneAndOnlyNoobofCSharp

+0

@marc_s感謝您的編輯xD – TheOneAndOnlyNoobofCSharp

回答

0

所以我想通了。這裏是現在爲我工作的代碼。我在數據庫中用不同的表格嘗試過它。

問題:任何人都知道如何從Excel中動態讀取數據並將數據加載到數據庫中?我的意思是,動態構建INSERT命令

[WebMethod] 
    public string dictToExcel(string dict_name) 
    { 
     string connectionString = ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString; 
     OracleConnection connection = new OracleConnection(connectionString); 

     try 
     { 
      connection.Open(); 

      OracleCommand cmd = new OracleCommand(); 
      cmd.Connection = connection; 
      cmd.CommandText = "SELECT * from " + dict_name; 
      cmd.CommandType = CommandType.Text; 

      OracleDataReader dataReader = cmd.ExecuteReader(); 

      IWorkbook workbook; 
      workbook = new XSSFWorkbook(); 

      ISheet sheet = workbook.CreateSheet("Sheet 1"); 

      int b = 0; 
      while (dataReader.Read()) 
      { 
       int n = 0; 
       IRow row = sheet.CreateRow(b); 
       while (n < dataReader.FieldCount) 
       { 
        ICell cell = row.CreateCell(n); 

        String columnName = dataReader.GetValue(n).ToString(); 
        cell.SetCellValue(columnName); 

        n++; 
       } 

       b++; 
      }