web中c#,DataTable导出至Excel,下载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31971935/article/details/69564975

具体实现功能,从数据库获取数据datatable,将datatable中的数据读取写入到本地的一个xls文件中,调用链接形式下载该文件。
1、界面列表(表名列表),点击该条数据,实现下载该表结构数据

   <asp:TemplateColumn HeaderText="表结构" >
                        <ItemStyle HorizontalAlign="Center"></ItemStyle>
                        <ItemTemplate>
                            <RongGuang:Button ID="BtnExport" runat="server" Text="导出" CssClass="BtnList" OnClick="BtnExport_Click" CommandName='<%#Eval("TableID") %>' />
                        </ItemTemplate>
                    </asp:TemplateColumn>

2、后台事件代码:

 protected void BtnExport_Click(object sender, EventArgs e)
        {
          Button ThisBtn =sender;
            if (!string.IsNullOrEmpty(ThisBtn.CommandName))
            {
                string tableID = ThisBtn.CommandName;
                DataView dv = DB.ExecuteDataView("select 表名,字段中文名称,字段名称,字段类型,字段长度,必填,数据源代码,默认值 from View_ExportTableStruct where TableID=" + tableID);
                string strAttURL = HttpContext.Current.Server.MapPath("~/Upload/表结构/") + tableID + "\\";
                if (Directory.Exists(strAttURL) == false)//如果不存在就创建file文件夹
                {
                    Directory.CreateDirectory(strAttURL);
                }
                string filePath = strAttURL + tableID + ".xls";
                //判断文件是否存在
                if (File.Exists(filePath))
                {
                    File.Delete(filePath);
                }
                if (ExportCSV(dv.ToTable(), filePath))
                {
                    string downUrl = Request.ApplicationPath + "/Upload/表结构/" + tableID + "/" + tableID + ".xls";

     //调用前台脚本     ScriptManager.RegisterStartupScript(this.Page, base.GetType(), Guid.NewGuid().ToString(), "DownClick('" + downUrl + "');", true);
                }
            }
        }
        public  bool ExportCSV(DataTable dtTemp, string fileNmae)
        {
            bool Msg = false;
            string con = "";
            if (dtTemp.Rows.Count>0)
            {
                con += dtTemp.Columns[0].ColumnName + ":" + dtTemp.Rows[0][0].ToString()+Environment.NewLine;
            }             
            for (int c=1;c<dtTemp.Columns.Count;c++)
            {
                con +=dtTemp.Columns[c].ColumnName + "\t";
            }
            con += Environment.NewLine;
            for (int i = 0; i < dtTemp.Rows.Count; i++)
            {
                for (int j =1; j < dtTemp.Columns.Count; j++)
                {
                    con += dtTemp.Rows[i][j].ToString().Replace("\n", " ").Replace("\r\n", " ").Replace(",", ",") + "\t";
                }
                con += Environment.NewLine;
            }
            try
            {
                FileStream fs = new FileStream(fileNmae, FileMode.Create);
                byte[] b = Encoding.GetEncoding("gb2312").GetBytes(con);
                fs.Write(b, 0, b.Length);
                fs.Close();
                Msg = true;
            }
            catch (Exception ex)
            {
                Msg = false;
            }
            return Msg;         
        }

3、前台脚本:

//导出表结构
                function DownClick(downloadUrl) {
                    window.location.href = downloadUrl;
                }

没有更多推荐了,返回首页