private void ExportToExcel(DataTable dtResult)
{
//取得报表模板文件路径
string excelTemplatePath = HttpContext.Current.Server.MapPath("..//Biz//template\\新闻发稿.xls");
//导出报表文件名
string fileName = "西北化工销售公司新闻发稿明细表" + System.DateTime.Now.ToString("yyyMMddHHmmss") + ".xls";
//导出文件路径
string outPutFilePath = HttpContext.Current.Server.MapPath("..//Biz//template//Temp/" + fileName);
//创建Excel对象
ExcelHelper excel = new ExcelHelper(excelTemplatePath, outPutFilePath);
int row = 0;
foreach (DataRow item in dtResult.Rows)
{
for (int i = 0; i < dtResult.Columns.Count - 1; i++)
{
excel.SetCells(3 + row, i + 1, item[i]);
}
row++;
}
excel.SaveFile();
string path = HttpContext.Current.Server.MapPath("..//Biz//template//Temp/" + fileName);
System.IO.FileInfo file = new System.IO.FileInfo(path);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename = " + HttpContext.Current.Server.UrlEncode(fileName));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
HttpContext.Current.Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
HttpContext.Current.Response.WriteFile(file.FullName);
// 停止页面的执行
System.IO.DirectoryInfo pathFolder = new System.IO.DirectoryInfo(Server.MapPath("..//Biz//template//Temp"));
DeleteExcel(pathFolder, fileName);//删除历史文件
HttpContext.Current.Response.End();
//Response.Write(" <script> window.close(); </script> ");
}
//删除历史下载的临时excel
private void DeleteExcel(System.IO.DirectoryInfo path, string downpath)
{
foreach (System.IO.FileInfo f in path.GetFiles())
{
if (f.Name != downpath && f.Name.Length>15 && f.Name.Substring(0, 15) == "西北化工销售公司新闻发稿明细表")
{
f.Delete();
}
}
}
{
//取得报表模板文件路径
string excelTemplatePath = HttpContext.Current.Server.MapPath("..//Biz//template\\新闻发稿.xls");
//导出报表文件名
string fileName = "西北化工销售公司新闻发稿明细表" + System.DateTime.Now.ToString("yyyMMddHHmmss") + ".xls";
//导出文件路径
string outPutFilePath = HttpContext.Current.Server.MapPath("..//Biz//template//Temp/" + fileName);
//创建Excel对象
ExcelHelper excel = new ExcelHelper(excelTemplatePath, outPutFilePath);
int row = 0;
foreach (DataRow item in dtResult.Rows)
{
for (int i = 0; i < dtResult.Columns.Count - 1; i++)
{
excel.SetCells(3 + row, i + 1, item[i]);
}
row++;
}
excel.SaveFile();
string path = HttpContext.Current.Server.MapPath("..//Biz//template//Temp/" + fileName);
System.IO.FileInfo file = new System.IO.FileInfo(path);
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename = " + HttpContext.Current.Server.UrlEncode(fileName));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
HttpContext.Current.Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
HttpContext.Current.Response.WriteFile(file.FullName);
// 停止页面的执行
System.IO.DirectoryInfo pathFolder = new System.IO.DirectoryInfo(Server.MapPath("..//Biz//template//Temp"));
DeleteExcel(pathFolder, fileName);//删除历史文件
HttpContext.Current.Response.End();
//Response.Write(" <script> window.close(); </script> ");
}
//删除历史下载的临时excel
private void DeleteExcel(System.IO.DirectoryInfo path, string downpath)
{
foreach (System.IO.FileInfo f in path.GetFiles())
{
if (f.Name != downpath && f.Name.Length>15 && f.Name.Substring(0, 15) == "西北化工销售公司新闻发稿明细表")
{
f.Delete();
}
}
}