当前位置:首页 > 技术交流 > 代码示例 > 正文内容

.net上传excel表格并解析数据绑定到Gridview

纵横四海3年前 (2021-07-21)代码示例1367


前台:

<tr>
   <td class="td_control" style="padding-left:10px;">
                
       <asp:FileUpload ID="FileUpload1" runat="server" Height="20px" />
                
       <asp:Button ID="Upload" runat="server" Text="点击导入信息" OnClick="Upload_Click" Width="100px" Height="20px" />
       
   </td>
</tr>

后台:

    //读取excel表格-Upload_Click方法要调用
    private DataTable createDataSource(string strPath)
    {
        //HDR=Yes代表第一行是标题,不是数据
        string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=" + strPath  + ";Extended Properties=Excel 8.0;HDR=Yes;";
        OleDbConnection con = new OleDbConnection(strCon);
        OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", con);
        DataTable dt = new DataTable();
        da.Fill(dt);
        return dt;
    }
    //将excel数据绑定到页面中
    protected void Upload_Click(object sender, EventArgs e)
    {
        //检查文件是否存在
        if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件
        {
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('请您选择Excel文件!');</script>");
            return;//当无文件时,返回
        }

        string filename = FileUpload1.FileName;
        //获取Execle文件名  DateTime日期函数
        string savePath = Server.MapPath(("~/Doc/") + filename);  //Server.MapPath 获得虚拟服务器相对路径
        FileUpload1.SaveAs(savePath);                             //SaveAs将上传的文件内容保存在服务器上

        //绑定数据  
        DataTable dt = createDataSource(savePath);
        gvBill.DataSource = dt;
        gvBill.DataBind();

    }


注意:

    这种方式仅支持低版本.xls格式,如果需要支持.xls和.xlsx请先在服务器中安装支持的书记访问组件(适用于office2010的Microsoft Access Database Engine 2010 Redistributable);

    下载地址:https://www.microsoft.com/zh-CN/download/details.aspx?id=13255    

    因为是web项目,所以要下载x86版本的,发布选anycpu,然后设置应用程序池32位兼容;

    然后要将后台代码中变量strCon改为:

string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strPath + "; Extended Properties=\"Excel 12.0;HDR=Yes\"";


    刚刚我们定义访问版本中HDR设为了Yes,第一行会成为标题;然后对Gridview绑定数据的时候可能会遇到麻烦;

    所以需要修改DataTable的表头信息:

dt.Columns[0].ColumnName = "declaration_Date";
dt.Columns[1].ColumnName = "project_Number";
dt.Columns[2].ColumnName = "project_Name";
dt.Columns[3].ColumnName = "trade_Mode";
dt.Columns[4].ColumnName = "agent_Name";

    要在绑定数据前将DataTable的列名修改。


版权声明:本文由纵横四海博客发布,如需转载请注明出处。

部分资源整理自互联网,如侵权请联系站长删除!

本文链接:https://www.fxkgg.com/post/18.html

分享给朋友:

相关文章

对接高德地图实例、获取当前城市、根据输入提示城市

这是一个对接高德地图获取当前城市和根据输入提示城市的小例子,如有不足或困惑,请在评论区留言。<!doctype html> <html> <head>    ...

一行或多行文本溢出不换行且显示省略css

/*文本溢出即不换行且显示省略号*/        //单行 display: inline-block; white-...

利用正则表达式进行字符串转换,只保留数字或者文字C#.net

利用正则表达式进行字符串转换,只保留数字或者文字C#.net

        今天做项目,遇到转换问题;需要将“ abc2022 ”转换为2022,int.Parse()里面包含字符...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。