• ASP.NET导入导出


     //创建一个数据链接
               // string strCon =" Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0} ;Extended Properties='Excel 8.0;HDR=yes'"; 
    //@"Provider=Microsoft.ACE.OleDb.12.0;Data Source="+path+";Extended Properties='Excel 12.0;HDR=YES'";
                //  HDR=NO 即无字段 
                //   HDR=yes 即有字段,一般默认excel表中第1行的列标题为字段名,如姓名、年龄等 
                //如果您在连接字符串中指定 HDR=NO,Jet OLE DB 提供程序将自动为您命名字段(F1 表示第一个字段,F2 表示第二个字段,依此类推); 
                // IMEX 表示是否强制转换为文本 
                //   Excel 驱动程序读取指定源中一定数量的行(默认情况下为 8 行)以推测每列的数据类型。 
                //如果推测出列可能包含混合数据类型(尤其是混合了文本数据的数值数据时), 
                //驱动程序将决定采用占多数的数据类型,并对包含其他类型数据的单元返回空值。 
                //(如果各种数据类型的数量相当,则采用数值类型。) 
                //Excel 工作表中大部分单元格格式设置选项不会影响此数据类型判断。 
                //可以通过指定导入模式来修改 Excel 驱动程序的此行为。 
                //若要指定导入模式,请在“属性”窗口中将 IMEX=1 添加到 Excel 
                //连接管理器的连接字符串内的扩展属性值中。 
    
            //打开连接后,查询语句//" SELECT * FROM [Sheet1$] ";
    
          1.excel数据显示页面 2.excel数据导入到数据库中  3.excel中数据修改,新增,删除     
    <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="StudentMS.aspx.cs" Inherits="WebApplication1.StudentMS" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
        <p> 
            excle文件:<asp:FileUpload ID="FileUpload1" runat="server" />
            <asp:Button ID="Button3" runat="server" Text="导入" onclick="Button3_Click" />
            <br />
        </p>
        <p>
            <asp:Button ID="Button1" runat="server" Text="预览数据库中的数据" 
                onclick="Button1_Click" />
            <asp:Button ID="Button2" runat="server" Text="导出" onclick="Button2_Click" />
        </p>
        <p>
            <asp:GridView ID="GridView1" runat="server">
            </asp:GridView>
        </p>
        <p>
            </p>
    </asp:Content>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.IO;
    using System.Data.OleDb;
    using System.Data.SqlClient;
    
    namespace WebApplication1
    {
        public partial class StudentMS : System.Web.UI.Page
        {
            string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=yes'";
            string connS = "server=STER-PC;uid=sa;pwd=123;database=t2";
            protected void Page_Load(object sender, EventArgs e)
            {
                string fileName = "content/student.xls";
                fileName = Server.MapPath(fileName);
                connStr = string.Format(connStr, fileName);//连接字符串
            }
    
            private void BindList()
            {
                string sql = "select * from [Sheet1$]";
                OleDbConnection conn = new OleDbConnection(connStr);
                conn.Open();
                OleDbCommand cmd = new OleDbCommand(sql, conn);
    
                OleDbDataAdapter da = new OleDbDataAdapter(cmd);
    
                DataTable dt = new DataTable();
                da.Fill(dt);
                conn.Close();
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
          
            //导出
            protected void Button2_Click(object sender, EventArgs e)
            {
    
                //1.复制一份模板,将temp复制一份
                string oldpath = Server.MapPath("content/student.xls");
                string npath = Server.MapPath("content/temp.xls");
                if (File.Exists(npath))
                {
                    File.Delete(npath);
                }
                File.Copy(oldpath,npath );
                //2.查询数据表
                string sql = "select * from sheet1";
                SqlConnection conn = new SqlConnection(connS);
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql,conn);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds,"bb");
                DataTable dt = ds.Tables["bb"];
                //3、将数据插入到表格中
    
                string sqlOleDb = "insert into [Sheet1$] values(@a,@b,@c)";
                OleDbParameter[] pms = new OleDbParameter[3];
                OleDbConnection oconn = new OleDbConnection(connStr);
                oconn.Open();
                OleDbCommand ocmd = new OleDbCommand(sqlOleDb,oconn);
                foreach (DataRow item in dt.Rows)
                {
                    string id = item["编号"].ToString();
                    string name = item["姓名"].ToString();
                    string sex = item["性别"].ToString();
    
                    pms[0] = new OleDbParameter("@a",id);
                    pms[1] = new OleDbParameter("@b",name);
                    pms[2] = new OleDbParameter("@c",sex);
    
                    foreach (OleDbParameter itemo in pms)
                    {
                        ocmd.Parameters.Add(itemo);
                    }
                    int i = ocmd.ExecuteNonQuery();
                    
                }
                conn.Close();
                oconn.Close();
    
    
                Response.ContentType = "application/vnd.ms-excel";
                Response.AddHeader("content-disposition", "attchment;filename=aaa.xls");
                FileStream fs = new FileStream(Server.MapPath("content/temp.xls"), FileMode.Open, FileAccess.Read, FileShare.Read);
                Stream st = Response.OutputStream;
                byte[] bt = new byte[102400];
                while (true)
                {
                    int len = fs.Read(bt, 0, bt.Length);
                    if (len == 0) break;
                    st.Write(bt, 0, len);
                    Response.Flush();
                } fs.Close();
                Response.End();
                Response.Write("导出成功");
    
    
    
                #region
                //int oi = 1;
                //string cid = "";
                //string cname = "";
                //string csex = "";
                ////1.把temp.xls复制一份(data.xls) File.Copy()
                //File.Copy(MapPath("content/temp.xls"), MapPath("content/student55.xls"));
                ////2.把数据库中的student数据查询出来
                //string sqlc = "select * from sheet1";
                //SqlConnection connc = new SqlConnection(connS);
                //connc.Open();
                //SqlCommand cmdc = new SqlCommand(sqlc, connc);
                //SqlDataAdapter dac = new SqlDataAdapter(cmdc);
                //DataSet dsc = new DataSet();
                //DataTable dtc = dsc.Tables["aa"];
                ////把查询出来的数据一条条插入到data.xls,
                //foreach (DataRow item in dtc.Rows)
                //{
                //    cid = item["id"].ToString();
                //    cname = item["name"].ToString();
                //    csex = item["sex"].ToString();
    
                //    string ofileName = "content/temp.xls";
                //    ofileName = Server.MapPath(ofileName);
                //    connStr = string.Format(connStr, ofileName);//连接字符串             
                //    string osql = "select * from [Sheet1$]";
                //    OleDbConnection oconn = new OleDbConnection(connStr);
                //    oconn.Open();
                //    OleDbCommand ocmd = new OleDbCommand(osql, oconn);
                //    OleDbDataAdapter oda = new OleDbDataAdapter(ocmd);
                //    OleDbParameter[] pm = new OleDbParameter[3];
                //    pm[0] = new OleDbParameter("@a", cid);
                //    pm[1] = new OleDbParameter("@b", cname);
                //    pm[2] = new OleDbParameter("@c", csex);
                //    DataSet ods = new DataSet();
                //    oda.Fill(ods, "bb");
                //    DataTable odt = ods.Tables["bb"];
                //    foreach (OleDbParameter oitem in pm)
                //    {
    
                //        ocmd.Parameters.Add(oitem);
                //    }
                //    oi += ocmd.ExecuteNonQuery();
                //    oconn.Close();
                //}
                //if (oi > 1)
                //{
                //    Response.Write("写入xls成功");
                //}
                //else
                //{
                //    Response.Write("写入xls失败");
                //}
                //connc.Close();
                //Response.ContentType = "application/vnd.ms-excel";
                //Response.AddHeader("content-disposition", "attchment;filename=aaa.zip");
                //FileStream fs = new FileStream(Server.MapPath("content/temp.xls"), FileMode.Open, FileAccess.Read, FileShare.Read);
                //Stream st = Response.OutputStream;
                //byte[] bt = new byte[102400];
                //while (true)
                //{
                //    int len = fs.Read(bt, 0, bt.Length);
                //    if (len == 0) break;
                //    st.Write(bt, 0, len);
                //    Response.Flush();
                //} fs.Close();
                //Response.End();
    
                ////3把data.xls发送出去
    
                #endregion
            }
            //预览
            protected void Button1_Click(object sender, EventArgs e)
            {
                BindList();
            }
            //导入
            protected void Button3_Click(object sender, EventArgs e)
            {
               //1.选择的文件上传到服务器的文件夹
                string type = Path.GetExtension(FileUpload1.FileName);
                string fileNamae = "content/" +FileUpload1.FileName;
                //保存
                FileUpload1.SaveAs(Server.MapPath(fileNamae));
                    
                //2.把刚上传的这个excel文件中的内容查询出来
                string id = "";
                string name = "";
                string sex = "";
                int i = 0;
                string sql = "select * from [Sheet1$]";
                OleDbConnection conn = new OleDbConnection(connStr);
                conn.Open();
                OleDbCommand cmd = new OleDbCommand(sql,conn);
                OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                DataSet ds=new DataSet();
                da.Fill(ds, "aa");
                DataTable dt = ds.Tables["aa"];
               
                foreach (DataRow item in dt.Rows)
                {
                    id = item["编号"].ToString();
                    name = item["姓名"].ToString();
                    sex = item["性别"].ToString();
    
                    
                    string sqli = "insert into sheet1 values(@a,@b,@c)";
                    SqlConnection conni = new SqlConnection(connS);
                    conni.Open();
                    SqlCommand cmdi = new SqlCommand(sqli, conni);
                    SqlParameter[] pm = new SqlParameter[3];
                    pm[0] = new SqlParameter("@a", id);
                    pm[1] = new SqlParameter("@b", name);
                    pm[2] = new SqlParameter("@c", sex);
                    foreach (SqlParameter item1 in pm)
                    {
                        cmdi.Parameters.Add(item1);
                    }
                   i+= cmdi.ExecuteNonQuery();
                   conni.Close();
                }
                if (i>1)
                {
                    Response.Write("导入成功");
                }
                else
                {
                    Response.Write("导入失败");
                }
                
                conn.Close();
                //一条条的插入列sqlserver数据库中
                
                
              
            }
        }
    }
  • 相关阅读:
    50个必备的实用jQuery代码段
    js前台改变服务器控件的disable的属性,后台获取不到值
    什么是线程安全?
    解决用JS修改服务器端控件值后在后台无法获取修改后值的问题
    C# 集合类 :(Array、 Arraylist、List、Hashtable、Dictionary、Stack、Queue)
    ASP.NET MVC生命周期介绍
    求一段CSS样式代码;要求是Table的标签样式,实现Table标签奇数行显示一个颜色;偶数行显示另外一种颜色
    JavaScript中Date.parse 函数用法
    sql 获取 一列的值显示一行
    超强 css 实现 table 隔行 ,隔列 换色
  • 原文地址:https://www.cnblogs.com/xiaz/p/5243075.html
Copyright © 2020-2023  润新知