2016-04-16 72 views
0

我正在創建一個報告,其中數據從我的訪問數據庫導出到這裏擅長。我沒有使用任何datagridview,當用戶單擊一個複選框適當的報告,他可以爲此下載我已經編寫的代碼,但是當我運行此代碼時它給我無法找到第25列,我不知道爲什麼它向我展示這個? 在訪問表我共有25列:找不到列25異常來

string sql = null; 
      string data = null; 
      int i = 0; 
      int j = 0; 

      Excel.Application xlApp; 
      Excel.Workbook xlWorkBook; 
      Excel.Worksheet xlWorkSheet; 
      object misValue = System.Reflection.Missing.Value; 

      xlApp = new Excel.Application(); 
      xlWorkBook = xlApp.Workbooks.Add(misValue); 
      xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 
    string connectionString = null; 

      connectionString = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString; 

      cnn.ConnectionString = connectionString; 
      cnn.Open(); 
      sql = "SELECT * FROM Billing WHERE Bill_No and Bill_Date is null order by FormNo desc"; 
      OleDbDataAdapter dscmd = new OleDbDataAdapter(sql, cnn); 
      DataSet ds = new DataSet(); 
      dscmd.Fill(ds); 
      cnn.Close(); 
for (j = 0; i < ds.Tables[0].Columns.Count; j++) 
      { 

       xlWorkSheet.Cells[1, j + 1] = ds.Tables[0].Columns[j].Caption; // Exception coming this line 
      } 

      for (i = 0; i < ds.Tables[0].Rows.Count; i++) 
      { 
       for (j = 0; j < ds.Tables[0].Columns.Count; j++) 
       { 
        data = ds.Tables[0].Rows[i].ItemArray[j].ToString(); 
        xlWorkSheet.Cells[i + 2, j + 1] = data; 
       } 
      } 
    System.Windows.Forms.SaveFileDialog saveDlg = new System.Windows.Forms.SaveFileDialog(); 
      saveDlg.InitialDirectory = @"C:\"; 
      saveDlg.Filter = "Excel files (*.xls)|*.xls"; 
      saveDlg.FilterIndex = 0; 
      saveDlg.RestoreDirectory = true; 
      saveDlg.Title = "Export Excel File To"; 
xlWorkBook.Close(true, misValue, misValue); 
      MessageBox.Show("File Downloaded successfully..."); 
      xlApp.Quit(); 
} 

回答

0

我得到的答案在這裏,我改變我的for循環

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