NPOI 2.1.3.1导入Excel
引入NPOI 2.1.3.1的包
项目引入
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
控制器方法:
public ActionResult DoDormIdImport()
        {
return RedirectToAction("DormIdImport");
        }
        [HttpPost]
        public ActionResult DoDormIdImport(HttpPostedFileBase filebase)
        {
            HttpPostedFileBase file = Request.Files["files"];
            string FileName;
            string savePath;
            if (file == null || file.ContentLength <= 0)
            {
                ViewBag.error = "文件不能为空";
                TempData["msg"] = ViewBag.error;
                return RedirectToAction("DormIdImport");
            }
            else
            {
                string filename = Path.GetFileName(file.FileName);
                int filesize = file.ContentLength;//获取上传文件的大小单位为字节byte
                string fileEx = System.IO.Path.GetExtension(filename);//获取上传文件的扩展名
                string NoFileName = System.IO.Path.GetFileNameWithoutExtension(filename);//获取无扩展名的文件名
                int Maxsize = 10000 * 1024;//定义上传文件的最大空间大小为10M
                string FileType = ".xlsx";//定义上传文件的类型字符串
FileName = NoFileName + DateTime.Now.ToString("yyyyMMddhhmmss") + fileEx;
                if (!FileType.Contains(fileEx))
                {
                    ViewBag.error = "文件类型不对,只能导入.xlsx格式的文件";
                    TempData["msg"] = ViewBag.error;
                    return RedirectToAction("DormIdImport");
                }
                if (filesize >= Maxsize)
                {
                    ViewBag.error = "上传文件超过10M,不能上传";
                    TempData["msg"] = ViewBag.error;
                    return RedirectToAction("DormIdImport");
                }
                string path = AppDomain.CurrentDomain.BaseDirectory + "Uploads/excel/";
                savePath = Path.Combine(path, FileName);
                file.SaveAs(savePath);
            }
            IWorkbook workbook = null;
            using (FileStream fs = new FileStream(savePath, FileMode.Open,FileAccess.Read, FileShare.ReadWrite))
            {
                //把xls文件读入workbook变量里,之后就可以关闭了  
                workbook = new XSSFWorkbook(fs);              
            }
            ISheet sheet = workbook.GetSheet("Sheet1");
            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
            DataTable dt = new DataTable();
            rows.MoveNext();
            IRow row = (XSSFRow)rows.Current;
            for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)
            {
                //dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());  
                //将第一列作为列表头  
                dt.Columns.Add(row.GetCell(j).ToString());
            }
            while (rows.MoveNext())
            {
                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);
            }
            int affect = 0;
            using (TransactionScope transaction = new TransactionScope())
            {
                IDormManager dm = new DormManager();
                foreach (DataRow dr in dt.Rows)                
                {
                    affect+=dm.UpdateLockByDorm(dr["number"].ToString(),dr["lockId"].ToString());
                }
                transaction.Complete();
            }
            ViewBag.error = "成功导入" + affect + "条";
            TempData["msg"] = ViewBag.error;
            return RedirectToAction("DormIdImport");
        }
//提供模板下载
        public FileResult GetFile()
        {
            string path = AppDomain.CurrentDomain.BaseDirectory + "Uploads/excel/";
            string fileName = "锁IdExcel模板.xlsx";
return File(path + fileName, "text/plain", fileName);
        }
页面
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>DormIdImport</title>
</head>
<body>
    <div>
        @using (Html.BeginForm("DoDormIdImport", "Dorm", FormMethod.Post, new { enctype = "multipart/form-data" }))
        {
            <h2>
                Excel信息导入
            </h2>
            <div>
                <fieldset id="myfieldset">
                    <legend>excel模版格式 </legend><font color="red">导入Execl的模板格式如下,若模板格式不正确,则相应的Execl不能导入!</font><br />                    
                    <p style="color: Red; text-align: center;">@Html.ActionLink("下载模版", "GetFile")</p>
                </fieldset>
            </div>
    <div style="margin-top: 20px;">
        <fieldset id="myfieldset1">
            <legend>Excel批量信息导入</legend>
            <p>
                选择文件:<input id="FileUpload" type="file" name="files" style="width: 250px; height: 24px;
                    background: White" class="easyui-validatebox" />
            </p>
            <p>
                <input id="btnImport" type="submit" value="导入" style="width: 60px; height: 28px;" />
            </p>
            <p style="color: Red; text-align: center;">@ViewBag.msg</p>            
        </fieldset>
    </div>
        }
    </div>
</body>
</html>
NPOI 2.1.3.1导入Excel的更多相关文章
- 利用npoi把多个DataTable导入Excel多个sheet中
		
{ 题外拓展:把datatable插入dataset DataTable fuben = new DataTable();//定义的datatablefuben = table.Tables[0].C ...
 - 如何使用NPOI 导出到excel和导入excel到数据库
		
近期一直在做如何将数据库的数据导出到excel和导入excel到数据库. 首先进入官网进行下载NPOI插件(http://npoi.codeplex.com/). 我用的NPOI1.2.5稳定版. 使 ...
 - ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库
		
使用NPOI导入Excel 首先在MVC项目中导入NPOI 查询NPOI安装,排序依据,选择:最高下载量,选择第一个. 在控制器中创建ExcelController 在Index视图中写入代码: @u ...
 - C#语言-NPOI.dll导入Excel功能的实现
		
前言:刚工作那会,公司有一套完善的MVC框架体系,每当有导入EXCEL功能要实现的时候,都会借用框架里自带的导入方法,一般三下五除二就完成了,快是快,可总是稀里糊涂的,心里很没有底.前几天,在另一个原 ...
 - 使用NPOI导入Excel注意日期格式和数字格式
		
//使用NPOI导入Excel public static DataTable importExcelToDataSetUsingNPOI(string FilePath, string fileNa ...
 - 使用npoi导入Excel - 带合并单元格--附代码
		
之前我们在使用npoi导入excel表格的时候,往往会遇见那种带有合并单元格的数据在导入的时候出现合并为空的问题, 也就是只有第一条有数据,其余均为空白.在网上翻了半天也没有找到合适的解决方案,最后还 ...
 - NPOI导入excel
		
1.引用NPOI: using NPOI.HSSF.UserModel;using NPOI.HSSF.Util;using NPOI.SS.UserModel; 2.导出excel 1 privat ...
 - .Net Core 使用 NPOI 导入Excel
		
由于之前在网上查阅一些资料发现总是不能编译通过,不能正常使用,现把能正常使用的代码贴出: /// <summary> /// Excel导入帮助类 /// </summary> ...
 - [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
		
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
 
随机推荐
- 分布式锁之三:Redlock实现分布式锁
			
之前写过一篇文章<如何在springcloud分布式系统中实现分布式锁?>,由于自己仅仅是阅读了相关的书籍,和查阅了相关的资料,就认为那样的是可行的.那篇文章实现的大概思路是用setNx命 ...
 - PHP大小写:函数名和类名不区分,变量名区分
			
PHP对大小写敏感问题的处理比较乱,写代码时可能偶尔出问题,所以这里总结一下. 但我不是鼓励大家去用这些规则.推荐大家始终坚持“大小写敏感”,遵循统一的代码规范. 1. 变量名区分大小写 <?p ...
 - PHP文件操作(三)-文件的写入
			
fwrite() //对文件进行写入 fwrite(file,string,length)file:必选项,需要写入的文件string:必选项,规定要写入文件的字符串length:可选项,规定要写入 ...
 - java事件监听机制2
			
今天早上的两点收获: 1.addActionListener(其中的setActionCommand函数就是要对对象进行唯一性的标记,便于消息传来后进行处理.理论上actionlistener可以全部 ...
 - BurpSuite系列(九)----Comparer模块(比较器)
			
一.简介 Burp Comparer在Burp Suite中主要提供一个可视化的差异比对功能,来对比分析两次数据之间的区别.使用中的场景可能是: 1.枚举用户名过程中,对比分析登陆成功和失败时,服务器 ...
 - Listview使用安卓自带布局实现单选
			
安卓提供了一些自带的布局,使用非常简单.直接看代码吧. package com.example.linfeng.myapplication; import android.app.Activity; ...
 - 对于现代开发来说,JavaScript就是一种垃圾语言(转)
			
伯乐在线导读:昨天 Reddit/Programming 频道的头条热帖是一篇来自 julik live 博主的技术吐槽文,最初的英文标题是"For modern development J ...
 - django dynamic model
			
django model 首先对于一个习惯用django model的骚年来说,你肯定对django model自定制用的很熟悉,但突然让你用django dynamic model,也许会有很多人懵 ...
 - 23-从零玩转JavaWeb-单例设计模式
			
一.什么是设计模式 二.什么是单例设计模式 三.单例设计模式特点 四.单例设计模式优点 五.单例设计模式实现步骤 六.什么是工具类
 - linux cp -r chmod -R 递归拷贝 删除 改权限
			
在linux下拷贝的时候有时候会出现cp:omitting directory的错误 ,例如 cp:omitting directory "bbs" 说明bbs目录下面还有目录,不 ...