读书人

ASP.NET 中 NPOI amp; LinqToSql 施用模板

发布时间: 2013-03-13 10:56:58 作者: rapoo

ASP.NET 中 NPOI & LinqToSql 使用模板 导出 Excel

在asp.net中,要想生成真正的Excel还是比较麻烦的,还好有NPOI这组件,这个组件来源自JAVA的POI,是POI的.net版本。


至于本题所讲述的,本文介绍在ASP.net中通过一个Excel模板文件,通过NPOI 结合 ASP.NET MVC的LinqToSql 导出Excel的方法。


首先,生成一个Excel文件,放在Content文件夹中,文件名为userModel.xls,本示例只介绍简单的Excel的生成,复杂的可以自己再深入研究。

Excel内容如下:

userIduserNamepassWord

下面就介绍C#实现方法

public ActionResult ExportUserInfo(){ExamDataContext db = new ExamDataContext();//查出用户数据var js = db.users.Select(m => m).OrderBy(m => m.userId);List<vw_yh_js> list = js.ToList();//打开Excle模板文件FileStream fileOne = new FileStream(Server.MapPath("/Contents/userModel.xls"), FileMode.Open, FileAccess.ReadWrite);HSSFWorkbook wbOne = new HSSFWorkbook(fileOne);//获取第一个工作表HSSFSheet sheet = (HSSFSheet)wbOne.GetSheetAt(0);//从第二行开始插入数据(行索引是从0开始的)int startRow = 1;//循环插入数据foreach (vw_yh_js item in js){HSSFRow rowOne = (HSSFRow)sheet.CreateRow(startRow);String userId = item.userId.ToString();rowOne.CreateCell(0).SetCellValue(userId);String userName = item.userName;rowOne.CreateCell(1).SetCellValue(userName);String passWord = item.passWord;rowOne.CreateCell(2).SetCellValue(passWord);startRow = startRow + 1;}//生成临时文件String newfileName = md5.Encode(DateTime.Now.ToString("yyyyMMddHHmmssff"));String newFileName = Server.MapPath("/upfiles/user_" + newfileName + ".xls");//将数据写入Excel文件FileStream file = new FileStream(newFileName, FileMode.Create);wbOne.Write(file);file.Flush();fileOne.Close();file.Close();//返回Excel文件,注意文件名如果有中文,请URL转译一下,否则会报“在邮件标头中找到无效的字符。”return File(newFileName, "application/ms-excel", Server.UrlEncode("用户数据") + ".xls");}



读书人网 >操作系统

热点推荐