asp.net Mvc Npoi 导出导入 excel

因近期项目遇到所以记录一下:

首先导出Excel :

首先引用NPOI包

http://pan.baidu.com/s/1i3Fosux

(Action一定要用FileResult)

/// <summary>   /// 批量导出本校第一批派位学生   /// </summary>   /// <returns></returns>   public FileResult ExportStu2()   {    string schoolname = "401";    //创建Excel文件的对象    NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();    //添加一个sheet    NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1");    //获取list数据    List<TB_STUDENTINFOModel> listRainInfo = m_BLL.GetSchoolListAATQ(schoolname);    //给sheet1添加第一行的头部标题    NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);    row1.CreateCell(0).SetCellValue("电脑号");    row1.CreateCell(1).SetCellValue("姓名");    //将数据逐步写入sheet1各个行    for (int i = 0; i < listRainInfo.Count; i++)    {     NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1);     rowtemp.CreateCell(0).SetCellValue(listRainInfo[i].ST_CODE.ToString());     rowtemp.CreateCell(1).SetCellValue(listRainInfo[i].ST_NAME.ToString());    }    // 写入到客户端     System.IO.MemoryStream ms = new System.IO.MemoryStream();    book.Write(ms);    ms.Seek(0, SeekOrigin.Begin);    return File(ms, "application/vnd.ms-excel", "第一批电脑派位生名册.xls");   }

前台直接写就可实现:

1、  @Html.ActionLink("点击导出名册", "ExportStu2")

下面说一下导出:

首先说一些前台吧,mvc上传注意必须加 new { enctype = "multipart/form-data" }:

<td>
                       2、@using(@Html.BeginForm("ImportStu", "ProSchool", FormMethod.Post, new { enctype = "multipart/form-data" })) { <text>选择上传文件:(工作表名为“Sheet1”,“电脑号”在A1单元格。)</text> <input name="file" type="file" id="file" /> <input type="submit" name="Upload" value="批量导入第一批电脑派位名册" /> } </td>

后台实现:只传路径得出DataTable:

/// <summary>   /// Excel导入   /// </summary>   /// <param name="filePath"></param>   /// <returns></returns>   public DataTable ImportExcelFile(string filePath)   {    HSSFWorkbook hssfworkbook;    #region//初始化信息    try    {     using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))     {      hssfworkbook = new HSSFWorkbook(file);     }    }    catch (Exception e)    {     throw e;    }    #endregion    using (NPOI.SS.UserModel.ISheet sheet = hssfworkbook.GetSheetAt(0))    {     DataTable table = new DataTable();     IRow headerRow = sheet.GetRow(0);//第一行为标题行     int cellCount = headerRow.LastCellNum;//LastCellNum = PhysicalNumberOfCells     int rowCount = sheet.LastRowNum;//LastRowNum = PhysicalNumberOfRows - 1     //handling header.     for (int i = headerRow.FirstCellNum; i < cellCount; i++)     {      DataColumn column = new DataColumn(headerRow.GetCell(i).StringCellValue);      table.Columns.Add(column);     }     for (int i = (sheet.FirstRowNum + 1); i <= rowCount; i++)     {      IRow row = sheet.GetRow(i);      DataRow dataRow = table.NewRow();      if (row != null) 

转载于:https://www.cnblogs.com/liufei88866/p/4178040.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值