将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>

后台代码:

 /// <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:\wwwroot\company 浏览的页面路径为E:\wwwroot\company\news\show.asp
            //在show.asp页面中使用
            //Server.MapPath("./")   返回路径为:E:\wwwroot\company\news
            //Server.MapPath("/")    返回路径为:E:\wwwroot
            //Server.MapPath("../")   返回路径为:E:\wwwroot\company
            //Server.MapPath("~/")   返回路径为:E:\wwwroot\company

            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);
        }

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;
        }
    }
}

将数据库内容导出到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();
        }

前台界面如下:

需要注意的:

时间: 2024-12-24 18:32:20

将Excel [导入到数据库] or 将数据 [导入到Excel]的相关文章

Java实现Excel导入数据库,数据库中的数据导入到Excel

实现的功能: Java实现Excel导入数据库,如果存在就更新 数据库中的数据导入到Excel 1.添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的lib目录下­ 2.Excel文件目录:D://book.xls 3.数据库名:javenforexcel 4.表名:stu 5.编写类:连接mysql的字符串方法.插入的方法.实体类­­ 表结构如下 : 连接数据库的工具类 package com.javen.db; import java.sql.Co

Java实现Excel导入数据库,数据库中的数据导入到Excel。。转载

自学资料总结 实现的功能: Java实现Excel导入数据库,如果存在就更新 数据库中的数据导入到Excel 1.添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的lib目录下­ 2.Excel文件目录:D://book.xls 3.数据库名:javenforexcel 4.表名:stu 5.编写类:连接mysql的字符串方法.插入的方法.实体类­­ 表结构如下 : 连接数据库的工具类 package com.javen.db; import java

将一个数据库中的数据导入另一个数据库(DB2)

将一个数据库中的数据导入另一个数据库(DB2) 我这里举得例子是使用的DB2数据库,其他数据库思路也是这样啦! 1.从db2 数据库中将表中的数据导入本地的excel中 export to d:\mytest.xls of del modified by nochardel coldel0x09 select * from IOUT_BUSI_YWDJMX_TEMP 2.在需要导入的数据库建立一个临时表 --创建临时表 CREATE TABLE NBADV.l_hzcitywa ( fhcode

使用Sqoop1.4.4将MySQL数据库表中数据导入到HDFS中

问题导读:         1.--connect参数作用? 2.使用哪个参数从控制台读取数据库访问密码? 3.Sqoop将关系型数据库表中数据导入HDFS基本参数要求及命令? 4.数据默认导入HDFS文件系统中的路径? 5.--columns参数的作用? 6.--where参数的作用? 一.部分关键参数介绍 参数介绍 --connect <jdbc-uri> 指定关系型数据库JDBC连接字符串 --connection-manager <class-name> 指定数据库使用的管

使用sqoop将MySQL数据库中的数据导入Hbase

使用sqoop将MySQL数据库中的数据导入Hbase 前提:安装好 sqoop.hbase. 下载jbdc驱动:mysql-connector-java-5.1.10.jar 将 mysql-connector-java-5.1.10.jar 拷贝到 /usr/lib/sqoop/lib/ 下 MySQL导入HBase命令: sqoop import --connect jdbc:mysql://10.10.97.116:3306/rsearch --table researchers --h

Sqoop1.4.4将MySQL数据库表中数据导入到HBase表中

问题导读:         1.--hbase-table.--hbase-row-key.--column-family及--hbase-create-table参数的作用? 2.Sqoop将关系型数据库表中数据导入HBase中,默认Rowkey是什么? 3.如果关系型数据库表中存在多关键字,该怎么办? 一.简介及部分重要参数介绍 Sqoop除了能够将数据从关系型数据库导入到HDFS和Hive中,还能够导入到HBase表中. --hbase-table:通过指定--hbase-table参数值

java实现数据库中的数据导入到Excel

1.添加 mysql-connector-java.1.7-bin.jar和jxl.jar包到项目的lib目录下- 2.数据库名为wiki 3.表名为stu 4.Excel文件目录:d://book.xls 5.编写类:连接mysql的字符串方法.插入的方法.实体类-- 表结构如下 : 链接数据库 表的实体类 将数据库的数据导入到Excel 效果显示

微软BI 之SSIS 系列 - 在 SSIS 中导入 ACCESS 数据库中的数据

开篇介绍 来自 天善学院 一个学员的问题,如何在 SSIS 中导入 ACCESS 数据表中的数据. 在 SSIS 中导入 ACCESS 数据库数据 ACCESS 实际上是一个轻量级的桌面数据库,直接使用文件形式存储.在国内大量使用 ACCESS 作为 BI 数据源并不多,但是在国外特别是美国使用的还比较多,因为他们的 IT 基础起步比较早.在我的第一个美国的医疗保险项目中,就遇到过大量的 ACCESS 数据源,前后总共有 500 多个 ACCESS 表.而现在从国外一些朋友反馈的情况仍然还有在使

SQL SERVER数据库跨服务器数据导入

今天从服务器导入到本地表数据,因为跨服务器,所以用特殊的方法 ---根据原表创建新表,并且把数据导入select * into 表 from openrowset('SQLOLEDB' ,'sql服务器名';'用户名';'密码' ,数据库名.dbo.表名) ---已经有表结构insert into 表 select* from openrowset('SQLOLEDB' ,'sql服务器名';'用户名';'密码' ,数据库名.dbo.表名) 如果本地Ad Hoc Distributed Quer