2016-04-16 16 views
0

ここで私のアクセスデータベースからエクスポートされたデータをExcelにエクスポートするレポートを作成しています。私はdatagridviewを使用していない、ユーザーが1つのチェックボックスをクリックすると、彼はこれをダウンロードすることができる適切なレポートを書くことができるが、私はこのコードを実行するときに私に与える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; 
     } 
    } 
関連する問題