asp读取excel数据并导出到新表,asp导出到excel的简单方法

首页 > 实用技巧 > 作者:YD1662023-10-27 09:16:25

前台拖一个Gridview,在拖一个导出excel的按钮,给这个按钮添加事件
后台代码:

using BLL; using Model; namespace Web { public partial class ExcelOperate : System.Web.UI.Page { private StudentBLL bll = new StudentBLL(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bind(); } } //绑定数据 private void Bind() { GridView1.DataSource = bll.GetAllStu(null); GridView1.DataBind(); } #regIOn 导出到Excel //导出excel protected void btnExcelout_Click(object sender, EventArgs e) { string style = @"<style> .text { mso-number-format:\@; } </script> "; //设置格式 Response.ClearContent(); Response.ContentEncoding = Encoding.GetEncoding("gbk"); Response.AddHeader("content-disposition", "attachment;filename=ouput.xls"); Response.ContentType = "application/excel"; StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); GridView1.RenderControl(htw); Response.Write(style);//注意 Response.Write(sw.ToString()); Response.End(); } //注意:必须覆盖此方法 public override void VerifyRenderingInServerForm(Control control) { //base.VerifyRenderingInServerForm(control); } //解决数字字符串显示不完全 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { // e.Row.Cells[3].Attributes.Add("class", "text");//在数据绑定中设置格式 //哪一列需要显示文本的,加上下面这句话即可 e.Row.Cells[3].Attributes.Add("style", "vnd.ms-excel.numberformat:@"); } #endregion } }

页面效果:

asp读取excel数据并导出到新表,asp导出到excel的简单方法(1)

asp读取excel数据并导出到新表,asp导出到excel的简单方法(2)

导入Excel并保存到数据库:
前台需要拖一个FileUpload上传控件,一个导入excel按钮,给其添加事件:

//导入excel数据 protected void btnExcelIn_Click(object sender, EventArgs e) { string filepath = string.Empty; string getErrormg = string.Empty; DataTable dt=new DataTable(); if (!fuFile.HasFile) { Response.Write("<script>alert('请选择你要导入的Excel文件');</script>"); return; } //获取文件的后缀名 string fileExt = System.IO.Path.GetExtension(fuFile.FileName); if (fileExt != ".xls") { Response.Write("<script>alert('文件类型错误!');</script>"); return; } //获取绝对路径 filepath = fuFile.PostedFile.FileName; string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";Data Source=" filepath; OleDbConnection excelCon = new OleDbConnection(conn); //Excel文件里面工作表名 默认为Sheet1,后面需要加上$符号[工作表名称$]切记,不然会报错 OleDbDataAdapter odda = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", excelCon); try { odda.Fill(dt); } catch (Exception ex) { Response.Write(ex.Message); Response.Write("<script>alert('" ex.Message "!')</script>"); } finally { excelCon.Close(); excelCon.Dispose(); } //将数据写到数据库里面 try { for (int i = 0; i < dt.Rows.Count; i ) { Studnet stu=new Studnet(); stu.C_id = Convert.ToInt32(dt.Rows[i]["c_id"]); stu.No = dt.Rows[i]["no"].ToString(); stu.Name = dt.Rows[i]["name"].ToString(); stu.Gender = dt.Rows[i]["gender"].ToString() == "男" ? true : false; stu.Age = Convert.ToInt32(dt.Rows[i]["age"].ToString()); bll.InsertStu(stu); } } catch (Exception ex) { getErrormg = ex.Message; Response.Write(ex.Message); } if (getErrormg == "") { Response.Write("<script>alert('导入Excel文件成功!')</script>"); Bind(); } else { Response.Write("<script>alert('导入Excel文件失败!')</script>"); } }

Excel和导入后的页面效果:

asp读取excel数据并导出到新表,asp导出到excel的简单方法(3)

asp读取excel数据并导出到新表,asp导出到excel的简单方法(4)

数据库在导入excel数据之前和时候的效果:

asp读取excel数据并导出到新表,asp导出到excel的简单方法(5)

这里要注意几个地方,一般导出excel的时候,数字文本会把前面的0都省略掉了,这里需要注意:红色代码片段,导入的时候,也有个***红红红色***标记码块要注意
以下是前台完整代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ExcelOperate.aspx.cs" Inherits="Web.ExcelOperate" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"></asp:GridView> <br /> <asp:Button ID="btnExcelout" runat="server" OnClick="btnExcelout_Click" Text="导出到Excel" /> <br /> <asp:FileUpload ID="fuFile" runat="server" /> <asp:Button ID="btnExcelIn" runat="server" OnClick="btnExcelIn_Click" Text="导入Excel数据" /> </div> </form> </body> </html>

以下是后台完整代码:

using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using BLL; using Model; namespace Web { public partial class ExcelOperate : System.Web.UI.Page { private StudentBLL bll = new StudentBLL(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bind(); } } //绑定数据 private void Bind() { GridView1.DataSource = bll.GetAllStu(null); GridView1.DataBind(); } #region 导出到excel //导出excel protected void btnExcelout_Click(object sender, EventArgs e) { string style = @"<style> .text { mso-number-format:\@; } </script> "; //设置格式 Response.ClearContent(); Response.ContentEncoding = Encoding.GetEncoding("gbk"); Response.AddHeader("content-disposition", "attachment;filename=ouput.xls"); Response.ContentType = "application/excel"; StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); GridView1.RenderControl(htw); Response.Write(style);//注意 Response.Write(sw.ToString()); Response.End(); } //注意:必须覆盖此方法 ***红红红色*** public override void VerifyRenderingInServerForm(Control control) { //base.VerifyRenderingInServerForm(control); } //解决数字字符串显示不完全 ***红红红色******红红红色******红红红色*** protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { //在数据绑定中设置格式 //哪一列需要显示文本的,加上下面这句话即可 e.Row.Cells[3].Attributes.Add("style", "vnd.ms-excel.numberformat:@"); } #endregion //导入excel数据 protected void btnExcelIn_Click(object sender, EventArgs e) { string filepath = string.Empty; string getErrormg = string.Empty; DataTable dt=new DataTable(); if (!fuFile.HasFile) { Response.Write("<script>alert('请选择你要导入的Excel文件');</script>"); return; } //获取文件的后缀名 string fileExt = System.IO.Path.GetExtension(fuFile.FileName); if (fileExt != ".xls") { Response.Write("<script>alert('文件类型错误!');</script>"); return; } //获取绝对路径 filepath = fuFile.PostedFile.FileName; string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";Data Source=" filepath; OleDbConnection excelCon = new OleDbConnection(conn); //默认为Sheet1,后面需要加上$符号表面为什么名称,[表名称$],切记不然会报错 OleDbDataAdapter odda = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", excelCon); try { odda.Fill(dt); } catch (Exception ex) { Response.Write(ex.Message); Response.Write("<script>alert('" ex.Message "!')</script>"); } finally { excelCon.Close(); excelCon.Dispose(); } //将数据写到数据库里面 try { for (int i = 0; i < dt.Rows.Count; i ) { Studnet stu=new Studnet(); stu.C_id = Convert.ToInt32(dt.Rows[i]["c_id"]); stu.No = dt.Rows[i]["no"].ToString(); stu.Name = dt.Rows[i]["name"].ToString(); stu.Gender = dt.Rows[i]["gender"].ToString() == "男" ? true : false; stu.Age = Convert.ToInt32(dt.Rows[i]["age"].ToString()); bll.InsertStu(stu); } } catch (Exception ex) { getErrormg = ex.Message; Response.Write(ex.Message); } if (getErrormg == "") { Response.Write("<script>alert('导入Excel文件成功!')</script>"); Bind(); } else { Response.Write("<script>alert('导入Excel文件失败!')</script>"); } } } }

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.