C# 将excel数据逐行呈现到网页(C)

C# 将excel数据逐行呈现到网页(C),c#,asp.net,excel,webmatrix,C#,Asp.net,Excel,Webmatrix,有人能帮我用WebMatrix 2逐行打印数据吗 我正在尝试使用excel 2007和/或2003。最后一行DataGrid1不工作。这是我尝试的第三天,请帮忙 String Excel = "C://TEST/test_2.xls"; String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Excel +";Extended Properties=Excel 8.0;"; string.Syst

有人能帮我用WebMatrix 2逐行打印数据吗

我正在尝试使用excel 2007和/或2003。最后一行DataGrid1不工作。这是我尝试的第三天,请帮忙

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>");
}

除了代码中的各种语法错误之外,您还创建了一个新的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>");
}

它怎么不起作用?错误是什么?请稍微清理一下代码。。通过评论很难判断你想用什么和不想用什么。还可以将以下内容添加到页面顶部的uses部分,这样就不必使用System.Data完全限定objCmdSelect;使用System.Data.OleDb;它的可读性有点混乱@{使用System.Data;和使用System.Data.OleDb会出现两个syntex错误。我没有Visual studio,所以我使用的是WebMatrix。如果您正在开发Web表单,但没有Visual studio,最好使用Visual studio Express for Web。这是免费的:遵循当前错误,这就是我希望使用循环读取数据的原因et逐行。仅供参考,我刚刚更新了顶部块中的代码。CS0103:objDataset1.表[0]中当前contextforeachSystem.Data.DataRow行中不存在名称“DataGrid1”。行{Response.Writerow.ToString+count++;}输出如下:System.Data.DataRow1 System.Data.DataRow2 System.Data.DataRow3………..System.Data。DataRow28@AnupSingh对于循环,您需要索引每个行项目,即列名,因此:Response.Writerow[列名].ToString。如果列的数量有限,并且您知道这些列的名称,则可以为每个列编写一条语句,否则只需沿着它们循环:objDataset1.Tables[0]中的foreachDataColumn列,然后是Response.Writerow[col.ColumnName].ToString