在asp.net中,要想生成真正的Excel还是比较麻烦的,还好有NPOI这组件,这个组件来源自JAVA的POI,是POI的.net版本。
至于本题所讲述的,本文介绍在ASP.net中通过一个Excel模板文件,通过NPOI 结合 ASP.NET MVC的LinqToSql 导出Excel的方法。
首先,生成一个Excel文件,放在Content文件夹中,文件名为userModel.xls,本示例只介绍简单的Excel的生成,复杂的可以自己再深入研究。
Excel内容如下:
| userId | userName | passWord |
下面就介绍C#实现方法
using NPOI.HSSF.UserModel;.........................
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");
}

本文介绍如何使用ASP.NET MVC结合NPOI组件从一个Excel模板文件中导出用户数据到新的Excel文件。该方法适用于需要批量导出用户信息的场景。

507

被折叠的 条评论
为什么被折叠?



