0

誰かが WebMatrix 2 を使用して行ごとにデータを印刷するのを手伝ってくれますか

Excel 2007 および/または 2003 を使用しようとしていますが、最後の行 DataGrid1 が機能していません。これで3日目です、助けてください。

String Excel = "C://TEST/test_2.xls";
String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Excel +";Extended Properties=Excel 8.0;";

string.System.Data.OleDb.OleDbConnection objConn = new`system.Data.OleDb.OleDbConnection(sConnectionString);`


objConn.Open();
System.Data.OleDb.OleDbCommand objCmdSelect = new System.Data.OleDb.OleDbCommand("SELECT * FROM [Sheet1$]", objConn);

System.Data.OleDb.OleDbDataAdapter objAdapter1 = new System.Data.OleDb.OleDbDataAdapter(objCmdSelect);

System.Data.DataSet objDataset1 = new System.Data.DataSet();

objAdapter1.Fill(objDataset1, "XLData");
objConn.Close();
int c = objDataset1.Tables[0].Columns.Count;
int count =0;

//For Test
Response.Write("Colums: "+objDataset1.Tables[0].Columns.Count.ToString()+"<br>");
Response.Write("Rows: "+objDataset1.Tables[0].Rows.Count.ToString()+"<br>");


// Bind data to DataGrid control. Following part not working, also i like to print data with for or foreach loop)

DataGrid1.DataSource = objDataset1.Tables[0].DefaultView;
DataGrid1.DataBind();
//Other option if Data.Grid does not work!!
change Rows to Columns to print Columns.
for (int i=0;i<r;i++){
for (int j=0;j<c;j++){
Response.Write(objDataset1.Tables[0].Rows[i].ItemArray[j]+" ");
}
Response.Write("<br>");
}
4

1 に答える 1

1

コード内のさまざまな構文エラーは別として、新しい を作成しましたOleDbDataAdapterが、それを何にも添付していません。Fill実行する SQL コマンドがないため、ステートメント中にプログラムが例外をスローしていると思われます。OleDataDbAdapterオブジェクトのインスタンス化を次のように編集する必要があります。

System.Data.OleDb.OleDbDataAdapter objAdapter1 = new System.Data.OleDb.OleDbDataAdapter(objCmdSelect);

また、DJ KRAZE が正しく指摘したように、コードの先頭に次の行を追加すると、コードが少し整理され、理解しやすくなります。

using System.Data;
using System.Data.OleDb;

ループでデータを「印刷」することについてのコメントが何を意味するのDataGridかわかりませんが、データを必要のない手段にバインドします。

編集:

ループを改善する方法は次のとおりです

foreach(DataRow row in objDataset1.Tables[0].Rows)
{
    foreach(DataColumn col in objDataset1.Tables[0].Columns)
    {
        Response.Write(row[col.ColumnName].ToString());
    }

    Response.Write(count++ + "<br>");
}
于 2012-10-31T00:26:05.143 に答える