您的位置:首页 > 编程语言 > ASP

c# asp.net NPOI 使用本地模板导出excel

2017-08-21 15:02 846 查看
using NPOI.HSSF.UserModel;

protected void btnExcel_Click(object sender, EventArgs e)
{

//将页面中的值放入excel模板中
string TempletFileName = Server.MapPath("Template/test.xls");
//导出文件
FileStream file = new FileStream(TempletFileName, FileMode.Open, FileAccess.Read);
HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);
HSSFSheet ws = hssfworkbook.GetSheet("testSheet");

//添加或修改WorkSheet里的数据
//line 1
ws.GetRow(0).GetCell(0).SetCellValue("123");
ws.GetRow(0).GetCell(1).SetCellValue("Plan");

ws.ForceFormulaRecalculation = true;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = false;
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
HttpContext.Current.Response.AddHeader("Content-Type", "application/octet-stream");
HttpContext.Current.Response.Charset = "UTF-8";
//设置下载的Excel文件名
HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", System.Web.HttpUtility.UrlEncode(filename + DateTime.Now.ToString("yyyyMMddhhmm") + ".xls", System.Text.Encoding.UTF8))); //文件名使用UTF-8编码
//Clear方法删除所有缓存中的HTML输出。但此方法只删除Response显示输入信息,不删除Response头信息。以免影响导出数据的完整性。
HttpContext.Current.Response.Clear();
using (MemoryStream ms = new MemoryStream())
{
//将工作簿的内容放到内存流中
hssfworkbook.Write(ms);
//将内存流转换成字节数组发送到客户端
HttpContext.Current.Response.BinaryWrite(ms.GetBuffer());
HttpContext.Current.Response.End();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  npoi 本地Excel模板