zoukankan      html  css  js  c++  java
  • Excel—— [导入到数据库] or 将数据 [导入到Excel]

    将Excel导入到数据库实现如下:

    前台代码:

    @model IEnumerable<Model.Student>
    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
        <script src="~/js/jquery.min.js"></script>
        <script>
            function ExcInput()
            {
                location.href = "/Home/ExcInput";
            }
        </script>
    </head>
    <body>
        <div>
            <form action="/Home/Execl" method="post" enctype="multipart/form-data">
                <input type="file" name="Exc" />
                <input type="submit" value="导入" />
            </form>
    
            <input type="submit" value="导出" onclick="ExcInput()"/>
            <table id="table">
                <tr>
                    <th>编号</th>
                    <th>姓名</th>
                    <th>年龄</th>
                    <th>性别</th>
                </tr>
                @foreach (var item in Model)
                {
                    <tr>
                        <td>@item.id</td>
                        <td>@item.name</td>
                        <td>@item.age</td>
                        <td>@item.sex</td>
                    </tr>
                }
            </table>
        </div>
    </body>
    </html>
    View Code

    后台代码:

     /// <summary>
            /// 初始化页面
            /// </summary>
            /// <returns></returns>
            public ActionResult Index()
            {
                DAL.StudentDal dal = new DAL.StudentDal();
                List<Student> ls = dal.GetStudentList();
                return View(ls);           
            }
    /// <summary>
            /// Excel上传部分
            /// 导入   Import
            /// </summary>
            /// <param name="Exc"></param>
            /// <returns></returns>
            [HttpPost]
            public ActionResult Execl(HttpPostedFileBase Exc)
            {
                #region /// 上传部分
    
                //如果当前的网站目录为E:wwwroot   应用程序虚拟目录为E:wwwrootcompany 浏览的页面路径为E:wwwrootcompany
    ewsshow.asp
                //在show.asp页面中使用
                //Server.MapPath("./")   返回路径为:E:wwwrootcompany
    ews
                //Server.MapPath("/")    返回路径为:E:wwwroot
                //Server.MapPath("../")   返回路径为:E:wwwrootcompany
                //Server.MapPath("~/")   返回路径为:E:wwwrootcompany
    
                string strfileName = Server.MapPath("/Word/"); //存储文件的地方
    
                if (!Directory.Exists(strfileName)) //判断文件路径是否存在
                {
                    Directory.CreateDirectory(strfileName);
                }
                string fName = Path.GetFileName(Exc.FileName); //获取文件名
                Exc.SaveAs(strfileName + fName);
    
                #endregion
    
                #region /// Execl导入部分
    
                //execl文件读取
                ExcelDAL exc = new ExcelDAL();
                DataTable dt = exc.ExcelToDS(strfileName + fName);
    
                //把读取的数据导入到数据库
                DAL.StudentDal dal = new DAL.StudentDal();
                foreach (DataRow dr in dt.Rows)
                {
                    Student student = new Student();
                    student.id = Convert.ToInt32(dr[0]);
                    student.name = dr[1].ToString();
                    student.sex = dr[2].ToString();
                    student.age = Convert.ToInt32(dr[3]);
                    dal.Add(student);
                }
    
                #endregion
    
                List<Student> ls = dal.GetStudentList();//查询出所有数据
    
                return View("Index", ls);
            }
    View Code

    Excel导入导出帮助类 ExcelDAL.cs

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    using Model;
    using System.Data.OleDb;
    
    namespace DAL
    {
        /// <summary>
        /// 
        /// </summary>
        public class ExcelDAL
        {
            /// <summary>
            /// 将excel中的数据取出,填充到dataset中
            /// </summary>
            /// <param name="path"></param>
            /// <returns></returns>
            public DataTable ExcelToDS(string path)
            {
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
    
                OleDbConnection conn = new OleDbConnection(strConn);
                OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", conn);
                DataSet ds = new DataSet();
                oda.Fill(ds);
                return ds.Tables[0];
            }
    
            /// <summary>
            /// 将单条数据插入到excel中
            /// </summary>
            /// <param name="path"></param>
            /// <param name="e"></param>
            /// <returns></returns>
            public int ExcelToAdd(string path, Student student)
            {
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
    
                OleDbConnection conn = new OleDbConnection(strConn);
                conn.Open();
                string SQL = "INSERT INTO [Sheet2$] ([编号],[姓名],[性别],[年龄]) VALUES(" + student.id + ",'" + student.name + "','" + student.sex + "'," + student.age + ")";
                OleDbCommand cmd = new OleDbCommand(SQL, conn);
                int i = cmd.ExecuteNonQuery();
                conn.Close();
                conn.Dispose();
                return i;
            }
    
            /// <summary>
            /// 通过循环将list中的数据插入到excel中
            /// </summary>
            /// <param name="path">excel的路径</param>
            /// <param name="studentList">数据集合</param>
            /// <returns></returns>
            public int ExcelToAdd(string path, List<Student> studentList)
            {
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
    
                OleDbConnection conn = new OleDbConnection(strConn);
                conn.Open();
    
                OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([编号] INT,[姓名] Text,[性别] Text,[年龄] int)", conn);
                cmd.ExecuteNonQuery();
    
                foreach (Student e in studentList)
                {
                    string SQL = "INSERT INTO [Sheet1$] ([编号],[姓名],[性别],[年龄]) VALUES(" + e.id + ",'" + e.name + "','" + e.sex + "'," + e.age + ")";
                    cmd = new OleDbCommand(SQL, conn);
                    int i = cmd.ExecuteNonQuery();
                }
                conn.Close();
                conn.Dispose();
                return 1;
            }
        }
    }
    View Code

    将数据库内容导出到Excel实现:

    后台代码:

      /// <summary>
            /// 导出  export
            /// </summary>
            /// <returns></returns>
            public ActionResult ExcInput()
            {
                #region /// 查询部分
    
                DAL.StudentDal dal = new DAL.StudentDal();
                List<Student> ls = dal.GetStudentList();
    
                #endregion
    
                ExcelDAL exc = new ExcelDAL();
    
                exc.ExcelToAdd("D:/studentDemo.xls", ls);
                return View();
            }
    View Code

    前台界面如下:

     

    需要注意的:

  • 相关阅读:
    Python基础(2)——数据类型:Numbers、列表、元组、字典、字符串、数据运算
    Exadata V2 Pricing
    Oracle网络TNS协议介绍(revised)
    V$LOCK视图显示TX锁没有对应的TM锁的几种可能现象
    Poor Data Export Performance(revised)
    single quote needed in expdp query?
    No way to disable datapump estimate?
    Oracle网络TNS协议的几个基础类描述(revised)
    logfile switch causes incremental checkpoint?
    图文详解安装NetBackup 6.5备份恢复Oracle 10g rac 数据库(修订)
  • 原文地址:https://www.cnblogs.com/shuai7boy/p/6980338.html
Copyright © 2011-2022 走看看