引入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>

posted on 2015-05-16 17:48  雾夜飞虫  阅读(572)  评论(0编辑  收藏  举报