• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#MVC实现导入导出

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

导入导出引用NPOI

 

 视图

 1   <input type="button" name="name" class="btn btn-success btn-sm" onclick="GetExcel()" value="导出"  />
 2             <form action="/Default/Import" method="post" enctype="multipart/form-data">
 3                 <input type="file" name="file" id="file" />
 4                 <input type="submit" name="name" class="btn btn-success btn-sm" value="导入" />
 5             </form>
 6 <script>
 7     //导出
 8       function GetExcel() {
 9     //window.location.href刷新当前页面,当前页面打开URL页面,同步提交
10     window.location.href = "@Url.Action("ExportByNPOI")";
11         }
12 </script>
Index.cshtml

控制器

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
using System.Web.Mvc;
using 导入导出.Models;

namespace 导入导出.Controllers
{
    public class DefaultController : Controller
    {
        /// <summary>
        /// 数据存储
        /// </summary>
        //List<StudentViewModel> stu = new List<StudentViewModel>()
        //{
        //     new StudentViewModel{Id=1,Name="小明",Sex="男",DateTime="2019-11-07",Static=1},
        //     new StudentViewModel{Id=2,Name="小红",Sex="女",DateTime="2019-11-08",Static=0},
        //     new StudentViewModel{Id=3,Name="小兰",Sex="女",DateTime="2019-11-09",Static=0},
        //     new StudentViewModel{Id=4,Name="小天",Sex="男",DateTime="2019-11-11",Static=1},
        //     new StudentViewModel{Id=5,Name="阿亮",Sex="男",DateTime="2019-11-12",Static=0},
        //     new StudentViewModel{Id=6,Name="王大力",Sex="男",DateTime="2019-11-13",Static=1}
        //};
        string sql = "select * from student";
       
        // GET: Default
        public ActionResult Index()
        {
            List<StudentViewModel> stu = MySqlDBHelper.GetList<StudentViewModel>(sql);
            return View(stu);
        }
        /// <summary>
        /// 导出Excel
        /// </summary>
        /// <returns></returns>
        public ActionResult ExportByNPOI()
        {
            List<StudentViewModel> stu = MySqlDBHelper.GetList<StudentViewModel>(sql);
            //1、获取数据源
            var result = stu;
            var list = result.Select(x => new { x.Id, x.Name, x.Sex, x.DateTime, x.Static }).ToList();
            //2、创建Excel文件的对象
            NPOI.HSSF.UserModel.HSSFWorkbook excel = new NPOI.HSSF.UserModel.HSSFWorkbook();
            //3、添加一个sheet
            NPOI.SS.UserModel.ISheet sheet = excel.CreateSheet("Sheet1");
            //给sheet1添加标题行
            NPOI.SS.UserModel.IRow head = sheet.CreateRow(0);
            head.CreateCell(0).SetCellValue("编号");
            head.CreateCell(1).SetCellValue("姓名");
            head.CreateCell(2).SetCellValue("性别");
            head.CreateCell(3).SetCellValue("入学时间");
            head.CreateCell(4).SetCellValue("状态");
            //将数据逐步写入sheet1各个行
            for (int i = 0; i < list.Count; i++)
            {
                NPOI.SS.UserModel.IRow row = sheet.CreateRow(i + 1);
                row.CreateCell(0).SetCellValue(list[i].Id);
                row.CreateCell(1).SetCellValue(list[i].Name);
                row.CreateCell(2).SetCellValue(list[i].Sex);
                row.CreateCell(3).SetCellValue(list[i].DateTime);
                row.CreateCell(4).SetCellValue(list[i].Static);
            }
            //写入到客户端
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            excel.Write(ms);
            ms.Seek(0, System.IO.SeekOrigin.Begin);
            return File(ms, "application/vnd.ms-excel", "顾客信息表.xls");
        }
        /// Excel导入
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public ActionResult Import(HttpPostedFileBase file)
        {
            
            string msg="";
            if (file == null)
            {
                msg = "导入失败";
            }
            else
            {
                //1、先保存上传的excel文件(这一步与上传图片流程一致)
                string extName = file.FileName;
                string path = Server.MapPath("~/Content/Files");
                string filename = Path.Combine(path, extName);
                file.SaveAs(filename);
                //2、读取excel文件(通过oledb将excel数据填充到datatable)
                //HDR=Yes,这代表第一行是标题,不做为数据使用,IMEX的含义(0:写入,1:读取,2:读取与写入)
                string filePath = filename;//必须是物理路径
                string conStr = "Provider=Microsoft.ACE.OLEDB.12.0; Persist Security Info=False;Data Source=" + filePath + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";

                OleDbDataAdapter adp = new OleDbDataAdapter("select * From[Sheet1$]", conStr);
                //默认读取的Sheet1,你也可以把它封装变量,动态读取你的Sheet工作表
                DataTable dt = new DataTable();
                adp.Fill(dt);
                //3、将table转化成list
                List<StudentViewModel> list = new List<StudentViewModel>();

                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow item in dt.Rows)
                    {
                        list.Add(new StudentViewModel()
                        {
                            //有哪个写哪个
                            Id = int.Parse(item["编号"].ToString()),
                            Name = item["姓名"].ToString(),
                            Sex = item["性别"].ToString(),
                            DateTime = item["入学时间"].ToString(),
                            Static = int.Parse(item["状态"].ToString())
                        });
                    }
                }
                //4、跨action传值用tempdata
                //TempData["list"] = list;
                //return RedirectToAction("List");

                //如果不直接导入数据库这里不用写
                StudentViewModel model = new StudentViewModel();
                for (int i = 0; i < list.Count; i++)
                {
                    model.Id = list[i].Id;
                    model.Name = list[i].Name;
                    model.Sex = list[i].Sex;
                    model.DateTime = list[i].DateTime;
                    model.Static = list[i].Static;
                    //调用添加方法
                    //var result = await baseRepository.Add(model);
                    //if (result > 0)
                    //{
                    //  msg = "导入成功";
                    //}
                    DAL dal = new DAL();
                    int result = dal.Create(model);
                    if (result > 0)
                    {

                        msg = "导入成功!";
                    }
                }
            }
           
            return Json(msg);
        }
        public class DAL {
            public int Create(StudentViewModel model)
            {
                string sql = string.Format("insert into Student(Id,Name,Sex,DateTime,Static) values('{0}','{1}','{2}','{3}','{4}')", model.Id, model.Name, model.Sex, model.DateTime, model.Static);
                int result = MySqlDBHelper.ExecuteNonQuery(sql);
                return result;
            }
        }
    }
}
Controller

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#list与数组互相转换发布时间:2022-07-18
下一篇:
C#获取gif帧数发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap