网页导出Excel文件并下载
protected void btnExport_Click(object sender, EventArgs e){try{string where = GetWhere();string sql = "select zkNum as 稿件编号,tittle as 稿件标题,authors as 作者,dws as 单位,phone as 电话,email as 邮箱,(zkNum + '-' + tittle) as Word文档,note as 备注 from tb_Zkzgqs where 1=1 " + where;DataTable dt1 = dal.GetDataBySql(sql);if (dt1 == null || dt1.Rows.Count == 0){Response.Write("<script>alert('增刊不存在,不能导出!')</script>");}else{string fileRpath = Server.MapPath("/HH_Download/Excel/zkExcel/") + DateTime.Now.ToString("yyyyMMddHHssmm")+".xls";ExcelHelper.TableToExcel(dt1, fileRpath);Response.ClearHeaders();Response.Clear();Response.Expires = 0;Response.Buffer = true;Response.AddHeader("Accept-Language", "zh-tw");string name = System.IO.Path.GetFileName(fileRpath);FileStream files = new FileStream(fileRpath, FileMode.Open, FileAccess.Read, FileShare.Read);byte[] byteFile = null;if (files.Length == 0){byteFile = new byte[1];}else{byteFile = new byte[files.Length];}files.Read(byteFile, 0, (int)byteFile.Length);files.Close();Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("增刊稿件列表.xls", System.Text.Encoding.UTF8));Response.ContentType = "application/octet-stream;charset=gbk";Response.BinaryWrite(byteFile);// Response.End();;}}catch(Exception ex){throw ex;}}
涉及的导出帮助类ExcelHelper 注意引用npoi
public static class ExcelHelper{#region 私有方法/// <summary>/// Excel导入成Datable/// </summary>/// <param name="file">导入路径(包含文件名与扩展名)</param>/// <returns></returns>public static DataTable ExcelToTable(string file){DataTable dt = new DataTable();IWorkbook workbook;string fileExt = Path.GetExtension(file).ToLower();using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read)){//XSSFWorkbook 适用XLSX格式,HSSFWorkbook 适用XLS格式if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(fs); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(fs); } else { workbook = null; }if (workbook == null) { return null; }ISheet sheet = workbook.GetSheetAt(0);//表头 IRow header = sheet.GetRow(sheet.FirstRowNum);List<int> columns = new List<int>();for (int i = 0; i < header.LastCellNum; i++){object obj = GetValueType(header.GetCell(i));if (obj == null || obj.ToString() == string.Empty){dt.Columns.Add(new DataColumn("Columns" + i.ToString()));}elsedt.Columns.Add(new DataColumn(obj.ToString()));columns.Add(i);}//数据 for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++){DataRow dr = dt.NewRow();bool hasValue = false;foreach (int j in columns){dr[j] = GetValueType(sheet.GetRow(i).GetCell(j));if (dr[j] != null && dr[j].ToString() != string.Empty){hasValue = true;}}if (hasValue){dt.Rows.Add(dr);}}}return dt;}public static DataSet ExcelToDataSet(string file){DataSet ds = new DataSet();// DataTable dt = new DataTable();IWorkbook workbook;string fileExt = Path.GetExtension(file).ToLower();using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read)){//XSSFWorkbook 适用XLSX格式,HSSFWorkbook 适用XLS格式if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(fs); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(fs); } else { workbook = null; }if (workbook == null) { return null; }DataTable[] dts = new DataTable[workbook.NumberOfSheets];dts[0] = new DataTable();dts[1] = new DataTable();for (int j = 0; j < workbook.NumberOfSheets; j++){ISheet sheet = workbook.GetSheetAt(j);IRow header = sheet.GetRow(sheet.FirstRowNum);List<int> columns = new List<int>();for (int i = 0; i < header.LastCellNum; i++){object obj = GetValueType(header.GetCell(i));if (obj == null || obj.ToString() == string.Empty){dts[j].Columns.Add(new DataColumn("Columns" + i.ToString()));}elsedts[j].Columns.Add(new DataColumn(obj.ToString()));columns.Add(i);}//数据 for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++){DataRow dr = dts[j].NewRow();bool hasValue = false;foreach (int k in columns){dr[k] = GetValueType(sheet.GetRow(i).GetCell(k));if (dr[k] != null && dr[k].ToString() != string.Empty){hasValue = true;}}if (hasValue){dts[j].Rows.Add(dr);}}ds.Tables.Add(dts[j]);}//ISheet sheet = workbook.GetSheetAt(0);//表头 }return ds;}/// <summary>/// Datable导出成Excel/// </summary>/// <param name="dt"></param>/// <param name="file">导出路径(包括文件名与扩展名)</param>public static void TableToExcel(DataTable dt, string file){IWorkbook workbook;string fileExt = Path.GetExtension(file).ToLower();if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(); } else { workbook = null; }if (workbook == null) { return; }ISheet sheet = string.IsNullOrEmpty(dt.TableName) ? workbook.CreateSheet("Sheet1") : workbook.CreateSheet(dt.TableName);//表头 IRow row = sheet.CreateRow(0);for (int i = 0; i < dt.Columns.Count; i++){ICell cell = row.CreateCell(i);cell.SetCellValue(dt.Columns[i].ColumnName);}//数据 for (int i = 0; i < dt.Rows.Count; i++){IRow row1 = sheet.CreateRow(i + 1);for (int j = 0; j < dt.Columns.Count; j++){ICell cell = row1.CreateCell(j);cell.SetCellValue(dt.Rows[i][j].ToString());}}//转为字节数组 MemoryStream stream = new MemoryStream();workbook.Write(stream);var buf = stream.ToArray();//保存为Excel文件 using (FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write)){fs.Write(buf, 0, buf.Length);fs.Flush();}}/// <summary>/// 获取单元格类型/// </summary>/// <param name="cell"></param>/// <returns></returns>private static object GetValueType(ICell cell){if (cell == null)return null;switch (cell.CellType){case CellType.Blank: //BLANK: return null;case CellType.Boolean: //BOOLEAN: return cell.BooleanCellValue;case CellType.Numeric: //NUMERIC: return cell.NumericCellValue;case CellType.String: //STRING: return cell.StringCellValue;case CellType.Error: //ERROR: return cell.ErrorCellValue;case CellType.Formula: //FORMULA: default:return "=" + cell.CellFormula;}}#endregion}
网页导出Excel文件并下载相关推荐
- asp.net中通过html格式导出excel文件
//通过html格式生成导出excel文件,下载保存. StreamExport(wgMdcStaff5, fileName, ToDataTable<MdcDrugProcureStock ...
- Springboot 自定义模板导出Excel文件
指定模板(自定义)导出数据,就像: 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 记得加$ 注意: 模板这里有个小坑,就是当传入的值为数组时,需要 ...
- js网页导出excel表格文件
下载地址 js网页导出excel表格文件,没有使用任何第三方js类库,简单的实现table数据导出效果. dd:
- a标签下载文件,js/jq创建a标签导出Excel文件
a标签下载文件,js/jq 创建a标签导出Excel文件 1.设置dom(html) <button type="button" class="layui-btn ...
- ASP.NET Core 导出Excel文件
最近学了一个ASP.NET Core 导出Excel文件程序,在学习过程中遇到了不少的麻烦!为了让大家更明白的怎么用ASP.NET Core 导出Excel文件,我决定把我学到的东西分享出来! 首先我 ...
- 如何使用JavaScript导入和导出Excel文件
本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. JavaScript是一个涵盖多种框架.直译式.可以轻松自定义客户端的脚本 ...
- 惊了!7 行代码优雅地实现 Excel 文件生成下载功能
欢迎关注个人微信公众号: 小哈学Java 个人网站: www.exception.site/essay/how-t- 目录 一.前言 二.Apache poi.jxl 的缺陷 三.阿里出品的 Easy ...
- java导入、导出Excel文件
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
- 如何使用JavaScript实现纯前端读取和导出excel文件(转)
转自小茗同学博客:https://www.cnblogs.com/liuxianan/p/js-excel.html js-xlsx 介绍 由SheetJS出品的js-xlsx是一款非常方便的只需要纯 ...
最新文章
- Linux下 SpringBoot jar项目后台运行、查看、停用
- 【Java代码】道格拉斯-普克 Douglas-Peucker 抽稀算法(算法流程图解+使用JDK8方法实现+详细注解源码)
- java java se_Java SE 7、8、9 –推动Java前进
- Netty源码注释翻译-Channel类
- androidStudio快捷键概览
- linux三剑客应用到工作中,LINUX 三剑客老大(AWK) 日常工作总结(示例代码)
- Javascript第五章document对象获取标签节点-第六课
- 最强的优化器:把RAdam和LookAhead协同组合
- 实例讲解微信小程序倒计时功能
- lame编译 android,Android编译Lame的全平台so库方案2,并实现转码mp3
- 计算机毕业设计JAVA企业售后服务管理系统mybatis+源码+调试部署+系统+数据库+lw
- java工厂方法_Java设计模式之工厂方法模式
- 分享我的33家公司面试经历(杭州华数/杭州网通/ 瞬联科技 )转贴
- 高版本php支持底版本wp,WP主题和插件将显示可以运行的PHP最低版本 | Wopus
- 5 爬虫 异步协程 梨视频
- win7 32/64位系统安装ug nx4.0
- 管道仪表流程图中常用的字母及其含义
- ZYNQ 常见问题解决方法
- 【win7死机也有可能是这个问题】
- gradle引入本地jar
热门文章
- 某不知名工控机装系统尝试
- ios 多线程gdc_GDC 2019中的Heretic,Megacity版本,实时光线追踪以及更多新闻
- SHU汇编程序设计常见考点、易错点总结与综合实例、汇编学习资源
- PHP直接将html导出doc文件并使其doc横向排版
- 在DDoS攻击来势汹汹的当下,DDoS防护还能临时抱佛脚吗?
- 圆与圆的位置关系题目含答案_中考总复习:圆的专题复习-圆的性质及与圆有关的位置关系考点分析...
- (王道计算机组成原理)第二章数据的表示和运算-第二节7:定点数除法运算(原码/补码一位除法)
- H5页面在iphone手机底部出现留白的情况
- 浪潮server 2008服务器自动重启,Windows Server 2008 R2不定时自动重启,求解决办法。...
- 按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。