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

本文介绍如何使用ASP.NET MVC结合NPOI组件从一个Excel模板文件中导出用户数据到新的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#实现方法

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");

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值