我现在要把一个Excel文件输出到DataGrid中,由于DataGrid必须是绑定列的,所以就要声明DataField. 问题随之而来,如果Excel文件中的表头:年份 单位代码 单位名称 标号 简称这几项名称的文字和"DataField=XXXXXXXXXX"的不一样,就会导致文件不能读取.比如“年份”被输入成“年 份”或者是“年分”.......
曾经想过用传参数的方法给DataField赋值,可是好象用DataField=<%=变量名%>的方法不行,.NET禁止这样的赋值,各位有什么好方法么?求教

解决方案 »

  1.   

    把Excel文件中的数据读入到DataGrid中 
    http://dev.csdn.net/develop/article/15/15544.shtm
      

  2.   

    楼上的没看明白我的问题~~你给我的示例中,DataField还是写死了的~~~~
      

  3.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    DataGrid1.DataSource=CreateDataSource();
    DataGrid1.DataBind();
    // 在此处放置用户代码以初始化页面
    } ICollection CreateDataSource() 
    {
    DataTable dt = new DataTable();
    DataRow dr;
    dt.Columns.Add(new DataColumn("身份证号码", typeof(string)));
    dt.Columns.Add(new DataColumn("图书单价",typeof(decimal)));
    dt.Columns.Add(new DataColumn("购买数量",typeof(Int32)));
    dt.Columns.Add(new DataColumn("总价格",typeof(decimal)));
    for (int i = 0; i < 30; i++) 
    {
    dr = dt.NewRow();
    dr[0] = "123456789123456789";
    dr[1] = 100 * i /3.0;
    dr[2] = i + 5;
    dr[3] = (decimal)dr[1] * (Int32)dr[2];
    dt.Rows.Add(dr);
    }
    DataView dv = new DataView(dt);
    return dv;
    } private void Button1_Click(object sender, System.EventArgs e)
    {
    Response.Clear(); 
    Response.Buffer= true; 
    Response.Charset="GB2312";    
    Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls"); 
    Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); //设置输出流为简体中文
    Response.ContentType = "application/ms-excel"; //设置输出文件类型为excel文件。 
    this.EnableViewState = false;    
    System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
    System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad); 
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
    this.DataGrid1.RenderControl(oHtmlTextWriter); 
    Response.Write(oStringWriter.ToString());
    Response.End(); }
    private void Button1_Click(object sender, System.EventArgs e)
    {
    Response.Clear(); 
    Response.Buffer= true; 
    Response.Charset="GB2312";    
    //Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls"); 
    //Response.AppendHeader("Content-Disposition","attachment;filename=FileName.doc"); 
    //Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt"); 
    Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); //设置输出流为简体中文
    //Response.ContentType = "application/ms-excel"; //设置输出文件类型为excel文件。 
    //Response.ContentType="application/ms-word";
    //Response.ContentType="application/ms-notepad";
    this.EnableViewState = false;    
    System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
    System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad); 
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
    this.DataGrid1.RenderControl(oHtmlTextWriter); 
    Response.Write(oStringWriter.ToString());
    Response.End(); }
      

  4.   

    呵呵~~ 好象没明白我的意思~~~是在aspx文件中的那个"Datafield"...eg: <asp:BoundColumn DataField="年份" ReadOnly="True" HeaderText="年份"></asp:BoundColumn>
    如果DataField="年份",而Excel文件这一列不是“年份”,如"年 份"什么的,就有错误了
      

  5.   

    protected DataSet CreateDataSource()
    {
    string strConn= "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source=C:\\Inetpub\\wwwroot\\contacts.xls;"+
    "Extended Properties=Excel 8.0;";
    OleDbConnection conn = new OleDbConnection(strConn);
    OleDbDataAdapter da= new OleDbDataAdapter("SELECT * FROM [ContactList$]", strConn);
    DataSet ds= new DataSet();
    da.Fill(myDataSet);
    return myDataSet;
    }
      

  6.   

    都没看明白么? 读进来自然可以,如果它表头中任何一项与我DataField写的不一样,就根本无法绑定了..
      

  7.   

    你可以在后台的cs文件中写DataGrid的DataField属性啊,可以允许用户输入字段的名字,例如:DataGrid.Columns[1].DataField = TextBox1.Text;