实习狗的每天新知识日常

准备工作:

1.在项目中添加对NPOI的引用,NPOI下载地址:http://npoi.codeplex.com/releases/view/38113

2.NPOI学习系列教程推荐:http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html

NPOI下载,里面有五个dll,需要引用到你的项目,我这边用的mvc4+三层的方式架构的项目

我用的工具是(vs2012+sql2014)

准备工作做完,我们开始进入主题

1.前端页面,代码:

<div class="filebtn"> @using (Html.BeginForm("importexcel", "foot", FormMethod.Post, new { enctype = "multipart/form-data" })){<samp>请选择要上传的Excel文件:</samp><span  id="txt_Path"></span><strong>选择文件<input name="file" type="file" id="file" /></strong>@*@Html.AntiForgeryToken()  //防止跨站请求伪造(CSRF:Cross-site request forgery)攻击*@<input type="submit" id="ButtonUpload" value="提交"   class="offer"/> }</div>

excel

2.接下来就是控制器

public class footController : Controller{//// GET: /foot/private static readonly String Folder = "/files";public ActionResult excel(){return View();}/// 导入excel文档public ActionResult importexcel(){//1.接收客户端传过来的数据HttpPostedFileBase file = Request.Files["file"];if (file == null || file.ContentLength <= 0){return Json("请选择要上传的Excel文件", JsonRequestBehavior.AllowGet);}//string filepath =  Server.MapPath(Folder);//if (!Directory.Exists(filepath))//{//    Directory.CreateDirectory(filepath);//}//var fileName = Path.Combine(filepath, Path.GetFileName(file.FileName));// file.SaveAs(fileName);//获取一个streamfile对象,该对象指向一个上传文件,准备读取改文件的内容Stream streamfile = file.InputStream;DataTable dt = new DataTable();string FinName = Path.GetExtension(file.FileName);if (FinName != ".xls" && FinName != ".xlsx"){return Json("只能上传Excel文档",JsonRequestBehavior.AllowGet);}else{try{if (FinName == ".xls"){//创建一个webbook,对应一个Excel文件(用于xls文件导入类)HSSFWorkbook hssfworkbook = new HSSFWorkbook(streamfile);dt = excelDAL.ImExport(dt, hssfworkbook);}else{XSSFWorkbook hssfworkbook = new XSSFWorkbook(streamfile);dt = excelDAL.ImExport(dt, hssfworkbook);}return Json("",JsonRequestBehavior.AllowGet);}catch(Exception ex){return Json("导入失败 !"+ex.Message, JsonRequestBehavior.AllowGet);}}}}

footController.cs

3.业务逻辑层[excelDAL]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NPOI;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using System.Data;
using NPOI.XSSF.UserModel;namespace GJL.Compoent
{public class excelDAL{///<summary>/// #region 两种不同版本的操作excel/// 扩展名*.xlsx/// </summary>public static DataTable ImExport(DataTable dt, XSSFWorkbook  hssfworkbook){NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0);System.Collections.IEnumerator rows = sheet.GetRowEnumerator();for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++){dt.Columns.Add(sheet.GetRow(0).Cells[j].ToString());}while (rows.MoveNext()){XSSFRow row = (XSSFRow)rows.Current;DataRow dr = dt.NewRow();for (int i = 0; i < row.LastCellNum; i++){NPOI.SS.UserModel.ICell cell = row.GetCell(i);if (cell == null){dr[i] = null;}else{dr[i] = cell.ToString();}}dt.Rows.Add(dr);}dt.Rows.RemoveAt(0);if (dt!=null && dt.Rows.Count != 0){for (int i = 0; i < dt.Rows.Count; i++){string categary = dt.Rows[i]["页面"].ToString();string fcategary = dt.Rows[i]["分类"].ToString();string fTitle = dt.Rows[i]["标题"].ToString();string fUrl = dt.Rows[i]["链接"].ToString();FooterDAL.Addfoot(categary, fcategary, fTitle, fUrl);}}return dt;}#region 两种不同版本的操作excel///<summary>/// 扩展名*.xls/// </summary>public static DataTable ImExport(DataTable dt, HSSFWorkbook hssfworkbook){// 在webbook中添加一个sheet,对应Excel文件中的sheet,取出第一个工作表,索引是0 NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0);System.Collections.IEnumerator rows = sheet.GetRowEnumerator();for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++){dt.Columns.Add(sheet.GetRow(0).Cells[j].ToString());}while (rows.MoveNext()){HSSFRow row = (HSSFRow)rows.Current;DataRow dr = dt.NewRow();for (int i = 0; i < row.LastCellNum; i++){NPOI.SS.UserModel.ICell cell = row.GetCell(i);if (cell == null){dr[i] = null;}else {dr[i] = cell.ToString();}}dt.Rows.Add(dr);}dt.Rows.RemoveAt(0);if (dt != null && dt.Rows.Count != 0){for (int i = 0; i < dt.Rows.Count; i++){string categary = dt.Rows[i]["页面"].ToString();string fcategary = dt.Rows[i]["分类"].ToString();string fTitle = dt.Rows[i]["标题"].ToString();string fUrl = dt.Rows[i]["链接"].ToString();FooterDAL.Addfoot(categary, fcategary, fTitle, fUrl);}}return dt;}#endregion}
}

excelDAL

 public static partial class FooterDAL{/// <summary>/// 添加/// </summary>/// <param name="id"></param>/// <param name="catgary"></param>/// <param name="fcatgary"></param>/// <param name="fTitle"></param>/// <param name="fUrl"></param>/// <returns></returns>public static int  Addfoot(string categary, string fcategary, string fTitle, string fUrl){string sql = string.Format("insert into Foot (categary,fcategary,fTitle,fUrl)values(@categary,@fcategary,@fTitle,@fUrl)");SqlParameter[] parm = { new SqlParameter("@categary",categary),new SqlParameter("@fcategary",fcategary),new SqlParameter("@fTitle",fTitle),new SqlParameter("@fUrl",fUrl)};return new DBHelperSQL<Foot>(CommonTool.dbname).ExcuteSql(sql,parm);   }
}

FooterDAL

//FooterDAL将datatable,就是excel里面的数据添加到sql数据库

转载于:https://www.cnblogs.com/wangwangwangMax/p/7922119.html

mvc手把手教你写excel导入相关推荐

  1. 手把手教你写网站:Python WEB开发技术实战

    摘要:本文详细介绍了Python WEB开发的基础入门.以一个博客站点的开发为例讲解了基于Django框架开发WEB站点的全过程.通过本文的学习可以快速掌握基于Django的Python WEB的开发 ...

  2. 良匠-手把手教你写NFT抢购软(五)

    良匠-手把手教你写NFT抢购软(五) 前言 本篇文章接上上一篇,如何用易语言去请求刚刚分析的接口. 操作 打开上次做的模板,和精易编程助手,先导入精易模块,再复制代码进去. 点击精易编程助手上面的生成 ...

  3. 良匠-手把手教你写NFT抢购软(二)

    良匠-手把手教你写NFT抢购软(二) 本篇教大家安装使用常用的NFT抢购所需软件 1.软件介绍 易语言 Fildder 精易编程助手 精易模块 软件链接 https://wws.lanzouy.com ...

  4. Vue3 Typescript + Axios 全栈开发教程:手把手教你写「待办清单」APP

    本文完整版:<Vue3 Typescript + Axios 全栈开发教程:手把手教你写「待办清单」APP> Vue3 Typescript + Axios 全栈开发教程 前端 Vue3 ...

  5. 程序之家系列教程之手把手教你写熊猫烧香病毒专杀工具

    (作者:chenhui530,论坛 http://chenhui530.com ) 前言       经过去年和熊猫烧香.威金等病毒的"斗争",我也累了,"程序之家病毒专 ...

  6. 手把手教你写一个中文聊天机器人

    本文来自作者 赵英俊(Enjoy) 在 GitChat 上分享 「手把手教你写一个中文聊天机器人」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 一.前言 发布这篇 Chat 的初衷是想和 ...

  7. 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫

    系列教程 手把手教你写电商爬虫-第一课 找个软柿子捏捏 如果没有看过第一课的朋友,请先移步第一课,第一课讲了一些基础性的东西,通过软柿子"切糕王子"这个电商网站好好的练了一次手,相 ...

  8. 手把手教你写一个生成对抗网络

    成对抗网络代码全解析, 详细代码解析(TensorFlow, numpy, matplotlib, scipy) 那么,什么是 GANs? 用 Ian Goodfellow 自己的话来说: " ...

  9. php注册程序,[PHP初级]手把手教你写注册程序 1

    [PHP初级]手把手教你写注册程序 1 实例内容 在此教程,我们将通过写一个用户注册程序,学习以下内容: 数据的传输与获取 信息的验证 pdo方式操作数据库 事务处理 前台显示文件:index.php ...

最新文章

  1. 怎么用c语言实现万年历,用C语言如何编写“万年历”
  2. java 一元线性回归_一元线性回归的java实现
  3. cropper初始化_jQuery.cropper中文API详解
  4. 静态注册BroadcastReceiver的注销问题
  5. IOS 如何获取ppi
  6. zookeeper启动失败的排错 no route to host 防火墙未关闭导致的
  7. poj1005——I Think I Need a Houseboat
  8. matlab欠采样,科学网—傅立叶欠采样算子的Matlab代码 - 屈小波的博文
  9. 池化层MaxPool函数详解及反向传播的公式推导
  10. 利用CSS让dl dt dd呈现多行多列效果
  11. [论文阅读笔记14]Nested named entity recognition revisited
  12. ip中继对接_FreePBX配置IP对接中继
  13. 递归求第五个人的年龄
  14. OpenMP编程指南
  15. 应用ceph块存储(ceph-13.2.10)
  16. 百度大脑人体分析服务3月上新盘点
  17. 关于刘慈欣的若干个标题
  18. JavaScript 一团乱,这是好事
  19. 河北省计算机三级报考人数已满,保定应届生研究生报名考点人数已满 紧急求助...
  20. 【移动网络】Ch. 2 移动网络基本原理 (Part1. 无线信道与数据率)

热门文章

  1. 解决烦人的img与input不能水平对齐的问题
  2. c语言和c++字符串操作对比
  3. 1 用python进行OpenCV实战之用OpenCV3实现图片载入、显示和储存
  4. 当有人看不起你时,要懂得反省自己
  5. 【B/S实践】解决:vs中修改样式表后不起作用的问题
  6. pytorch中调整学习率的lr_scheduler机制
  7. Python ljust()方法
  8. GOF23设计模式(创建型模式) 原型模式
  9. 如何为嵌入式应用选择适当的SSD
  10. TOF摄像机可以替代Flash激光雷达吗?