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>

时间: 2024-10-08 11:50:14

NPOI 2.1.3.1导入Excel的相关文章

利用npoi把多个DataTable导入Excel多个sheet中

{ 题外拓展:把datatable插入dataset DataTable fuben = new DataTable();//定义的datatablefuben = table.Tables[0].Copy(); 把获取的datatable复制到新的表中fuben.TableName = "sheet" + userid + "";定义表名ds.Tables.Add(fuben);插入dataset 之所以这么麻烦是因为 我用了返回dataset的方法来获取的dat

NPOI导入excel

1.引用NPOI: using NPOI.HSSF.UserModel;using NPOI.HSSF.Util;using NPOI.SS.UserModel; 2.导出excel 1 private void btnadd_MouseUp(object sender, MouseButtonEventArgs e) 2 { 3 try 4 { 5 #region 打印导出无统计数据 6 if (dt != null && dt.Rows.Count > 0) 7 { 8 //创建

使用NPOI导入Excel注意日期格式和数字格式

//使用NPOI导入Excel public static DataTable importExcelToDataSetUsingNPOI(string FilePath, string fileName) { DataSet myDs = new DataSet(); DataTable dt = new DataTable("mytable"); myDs.Tables.Add(dt); DataRow myRow; myDs.Clear(); try { using (Strea

.Net core 使用NPOI 直接导入Excel到数据库(即不先将Excel保存到服务器再读取文件到数据库)

原文:.Net core 使用NPOI 直接导入Excel到数据库(即不先将Excel保存到服务器再读取文件到数据库) 1 /// <summary> 2 /// 导入信息 3 /// </summary> 4 /// <param name="file"></param> 5 /// <returns></returns> 6 /// /Public/PublicPool/ImportCustomer 7 pub

Asp.NET MVC 导入Excel数据教程 手把手教你系列!!!

先上效果图 1.引言 小弟最近接了个大学生的毕业设计,收了100块钱让做一个ASP.NET MVC导入Excel到数据库的功能,由于以前没做过就到处搜索资料,但是发现网上的资料不是直接贴一大堆乱起八遭的源码,就是需要借用NPOI第三方类库太麻烦了,况且预算才100RMB简直不值得,所以小弟尝试自己动手丰衣足食,所以就有了这篇博客. 先上一张小弟的思路图: (说明:没有安装做流程图的软件!凑合着看吧) 2 进入正题 首先跟着小弟先创建一个默认的MVC项目(相信大家都会创建,这里就不演示了) 第一步

.Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法)

.Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构) public class ExcelController : Controller { // // GET: /Excel/ Models.zbwxglEntities myMdl = new Models.zbwxglEntities(); /// <summary> /// 第一种方法,利用文件输出流进行读写操作 /// <

C#变成数据导入Excel和导出Excel

excel 基础 •整个excel 表格叫工作表:workbook:工作表包含的叫页:sheet:行:row:单元格:cell. •excel 中的电话号码问题,看起来像数字的字符串以半角单引号开头就没问题了. •使用区域(usedrange):用excel 表的时候不一定是从最左上角的单元格开始用,为了减小文件尺寸,有使用区域的概念,excel 只存储使用区域. 程序处理excel 的技术 •ole automation:程序启动一个excel 进程,然后和excel 进程进行通讯来进行exc

导入Excel至数据库——程序实现

说明 承接上一篇博客,本篇博文将提供一种实现Excel数据导入数据库表的具体C#实现,其实,如果只针对单纯的一个业务开发,不用想太多内容的,只要将Excel数据转换为DataTable后具体操作,也就完成了,但如果要想写出能够应对多个需求业务的程序的时候就不得不想一些能够复用的方法了.废话少说,还是具体看一下具体的实现过程: 再次列一下我们的功能需求点: 换列名--中文-属性名称(字段名称) 必要性--必要列.行数据 去重复--Excel数据的重复.Excel与DataTable数据的重复 默认

[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作