界面内容如下:

导出后显示查询到的数据如下:


c#调用代码如下:

 protected void btnOutput_Click(object sender, EventArgs e){gvEquData.AllowPaging = false;BindGridViewData();ExcelHelper helper = new ExcelHelper();helper.ExportExcel(gvEquData, "设备状态信息列表"+DateTime.Now.ToString("yyyyMMddHHmmss")+".xls", "设备状态信息列表");}

这里我使用了NPOI这个dll来操作excel,这个dll需要去网上下载。然后新建一个类用来操作excel,如下:

public class ExcelHelper
{#region  NPOI Excel导出/// <summary>/// 导出Excel /// </summary>/// <param name="GV">控件名称(GridView) 如有需要稍加修改可应用于DateGird等.Net数据控件</param>/// <param name="ExcleName">保存的Excel名字</param>/// <param name="SheetName">工作簿名字</param>/// <param name="cols">图片列 如果没有图片列 该参数可赋 NULL </param>public void ExportExcel(GridView GV, string ExcleName, string SheetName){HSSFWorkbook hssfworkbook = new HSSFWorkbook();InitializeWorkbook(hssfworkbook, "雄帝", " Export  Excel ");HSSFSheet sheet1 = (HSSFSheet)hssfworkbook.CreateSheet(SheetName);HSSFPatriarch patriarch = (HSSFPatriarch)sheet1.CreateDrawingPatriarch();//插入图片所用HSSFRow row;HSSFCell cell;//合并单元格信息int startRow = 0;int startColumn = 0;int span = 0;int col = 0;//当前的格数int rownum = 0;row = (HSSFRow)sheet1.CreateRow(0);//添加Excel标题for (int K = 0; K < GV.HeaderRow.Cells.Count; K++)//GV.Columns.Count{cell = (HSSFCell)row.CreateCell(K);if (GV.HeaderRow.Cells[K].HasControls()){ControlCollection cc=GV.HeaderRow.Cells[K].Controls;if (cc.Count < 2){if (cc[0] is Literal){Literal ltl = cc[0] as Literal;cell.SetCellValue(ltl.Text);}else{cell.SetCellValue(GV.Columns[K].HeaderText);}}else{if (cc[1] is Literal){Literal ltl = cc[1] as Literal;cell.SetCellValue(ltl.Text);}else{cell.SetCellValue(GV.Columns[K].HeaderText);}}}else{cell.SetCellValue(GV.Columns[K].HeaderText);//}//cell.SetCellValue(getCellText(GV.HeaderRow.Cells[K]));//}//加载数据for (int i = 0; i < GV.Rows.Count; i++)//{row = (HSSFRow)sheet1.CreateRow(i + 1);rownum = i + 1;for (int j = 0; j < GV.HeaderRow.Cells.Count; j++)//GV.Columns.Count{if (GV.HeaderRow.Cells[j].Controls.Count>1){cell = (HSSFCell)row.CreateCell(j);if (GV.HeaderRow.Cells[j].Controls[0] is CheckBox){CheckBox cbx = GV.HeaderRow.Cells[j].Controls[0] as CheckBox;if (cbx.Checked){cell.SetCellValue("是");}else{cell.SetCellValue("否");}}}else{TableCell Usecell = GV.Rows[i].Cells[j];if (Usecell.RowSpan != 0 || Usecell.ColumnSpan != 0)//当含有和并列(行)的时候记录该合并数据{startRow = i + 1;//起始行startColumn = j;//起始列span = Usecell.RowSpan;//合并的行数col = Usecell.ColumnSpan;//合并的列数}cell = (HSSFCell)row.CreateCell(j);//当处于合并状时忽略该格式内容if (i + 1 > startRow && j > startColumn && (startRow + span) > i + 1 && (startColumn + col) > j){}else if (i + 1 == startRow && j == startColumn){//进行单元格的合并int row2 = (span == 0) ? 0 : (span - 1);int col2 = (col == 0) ? 0 : (col - 1);sheet1.AddMergedRegion(new Region(i + 1, j, i + row2 + 1, j + col2));cell.SetCellValue(getCellText(GV.Rows[i].Cells[j]));}else{cell.SetCellValue(getCellText(GV.Rows[i].Cells[j]));}}}}//加载Footer部分数据row = (HSSFRow)sheet1.CreateRow(rownum + 1);int footerAt = 0;int footSpan = 0;if (GV.FooterRow != null){for (int footNum = 0; footNum < GV.FooterRow.Cells.Count; footNum++){TableCell footTc = GV.FooterRow.Cells[footNum];if (footTc.ColumnSpan != 0){footSpan = footTc.ColumnSpan;footerAt = footNum;}cell = (HSSFCell)row.CreateCell(footNum);if (footNum > footerAt && footNum < footSpan + footerAt){}else if (footNum == footerAt)//合并单元格{int footercol2 = (footSpan == 0) ? 0 : (footSpan - 1);sheet1.AddMergedRegion(new Region(rownum + 1, footerAt, rownum + 1, footerAt + footercol2));cell.SetCellValue(getCellText(GV.FooterRow.Cells[footNum]));}else{cell.SetCellValue(getCellText(footTc));}}}string path = ExcleName;ExportToExcel(hssfworkbook, ExcleName);}/// <summary>/// 导出Excel/// </summary>/// <param name="Dt">数据源</param>/// <param name="ExcleName">导入文件名称</param>/// <param name="SheetName">工作薄名称</param>/// <param name="titleArr">标题栏</param>/// <param name="clumnArr">栏位名</param>public void ExportExcel(DataTable Dt, string ExcleName, string SheetName, string[] titleArr, string[] clumnArr){HSSFWorkbook hssfworkbook = new HSSFWorkbook();InitializeWorkbook(hssfworkbook, "雄帝", " Export  Excel ");HSSFSheet excelSheet = (HSSFSheet)hssfworkbook.CreateSheet(SheetName);int rowCount = 0;HSSFRow newRow = (HSSFRow)excelSheet.CreateRow(0);rowCount++;//循环写出列头         for (int i = 0; i < titleArr.Length; i++){HSSFCell newCell = (HSSFCell)newRow.CreateCell(i);newCell.SetCellValue(titleArr[i]);}for (int i = 0; i < Dt.Rows.Count; i++){rowCount++;HSSFRow newRowData = (HSSFRow)excelSheet.CreateRow(rowCount);DataRow dr = Dt.Rows[i];for (int j = 0; j < clumnArr.Length; j++){HSSFCell newCell = (HSSFCell)newRow.CreateCell(rowCount);newCell.SetCellValue(dr[titleArr[j]].ToString());}}string path = ExcleName;ExportToExcel(hssfworkbook, ExcleName);}//获取图片路径string getCellText(TableCell tc){string result = HttpUtility.HtmlDecode(tc.Text);//HttpUtility.HtmlDecode(str);foreach (Control child in tc.Controls){if (child is Label){result = HttpUtility.HtmlDecode(((Label)child).Text);result = result.Trim();break;}}string textLast = result.Trim();return textLast;}/// <summary>/// 对产生的Excel进行文本输入/// </summary>/// <param name="Path">输出路径</param>public void WriteToFile(string Path){Write the stream data of workbook to the root directory//FileStream file = new FileStream(Path, FileMode.Create);//hssfworkbook.Write(file);//file.Close();}/// <summary>/// 填写Excel文本属性  如有需要可以进行函数扩展 添加更多的属性值/// </summary>/// <param name="CompanyName">公司名称</param>/// <param name="Subject">文档主题</param>public void InitializeWorkbook(HSSFWorkbook hssfworkbook, string CompanyName, string Subject){//hssfworkbook = new HSSFWorkbook();//create a entry of DocumentSummaryInformationDocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();dsi.Company = CompanyName;hssfworkbook.DocumentSummaryInformation = dsi;//create a entry of SummaryInformationSummaryInformation si = PropertySetFactory.CreateSummaryInformation();si.Subject = Subject;hssfworkbook.SummaryInformation = si;}MemoryStream WriteToStream(HSSFWorkbook hssfworkbook){//Write the stream data of workbook to the root directoryMemoryStream file = new MemoryStream();hssfworkbook.Write(file);return file;}public void ExportToExcel(HSSFWorkbook hssfworkbook, string filePath){#region  //以字符流的形式下载文件//FileStream fs = new FileStream(Apppath + filePath, FileMode.Open);//byte[] bytes = new byte[(int)fs.Length];//fs.Read(bytes, 0, bytes.Length);//fs.Close();#endregionHttpContext.Current.Response.ContentType = "application/vnd.ms-excel";HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" +
HttpUtility.UrlEncode(filePath, System.Text.Encoding.UTF8));HttpContext.Current.Response.Clear();//HttpContext.Current.Response.BinaryWrite(bytes);HttpContext.Current.Response.BinaryWrite(WriteToStream(hssfworkbook).GetBuffer());HttpContext.Current.Response.Flush();//HttpContext.Current.Response.End();//HttpContext.Current.Response.IsClientConnected}#endregion
}

asp.NET导出Gridview到excel 带模板列显示相关推荐

  1. [转]asp.net导出数据到Excel的三种方法

    原文出处:asp.net导出数据到Excel的几种方法(1/3) .asp.net导出数据到Excel的几种方法(2/3).asp.net导出数据到Excel的几种方法(3/3) asp.net导出到 ...

  2. asp.net导出GridView数据到Excel

    最近做了一个导出GridView数据到Excel中的例子,把代码和遇到的一些问题放出来.  1        Response.Clear();  2        Response.Buffer = ...

  3. Asp.Net 导出数据格式为Excel 数据的9种方案

    Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式.Tab格式.website table 等多钟格式的文档.它具备自动识别行号,字符,格式化数字等功能,例如:如果你 ...

  4. Java导出Excel提示文件损坏_导出Gridview到Excel成功但文件已损坏?

    我需要以编程方式创建一个包含3个工作表的Excel电子表格 . 对于Sheet1,我正在尝试导出一个Gridview ...及其所有格式...而不使用Http.Response这样做,因为该技术强制文 ...

  5. gridview中动态绑定通过模板列增加的textbox。

    首先 我想 实现的就是,通过gridview中模板列增加个textbox,并且从数据库中查出来这列值,然后绑定到textbox上. 下面是我实现的效果(毁损时间 就是我的那个列,下面就是我显示出来的时 ...

  6. asp.net导出数据到Excel

    Code  1        Sql数据列表导出到EXCEL#region Sql数据列表导出到EXCEL  2        /**////<summary>  3        /// ...

  7. 【js-xlsx和file-saver插件】前端html的table导出数据到excel的表格合并显示boder

    最近在做项目,需要从页面的表格中导出excel,一般导出excel有两种方法:一.习惯上是建模版从后台服务程序中导出:二.根据页面table中导出:综合考虑其中利弊选择二.根据页面table中导出ex ...

  8. C#基于Npoi通过特性的方式导出简单数据到Excel或基于特性以及基于Excel模板导出数据到Excel以及从Excel中把数据导入到对象中

    导出数据到Excel表格以及从Excel表格中读取数据是我们日常开发很多情况都会遇到的,这里或许只是导出一些简单的数据到excel,这里或许会按照一定的模板导出数据到excel,这里也可能需要从Exc ...

  9. springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel

    springboot使用jxls导出excel 实现思路: 首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口 ...

  10. 寻找GridView中模板列中的控件

    假如你在gridview中添加一个模板列,并 在模板列中存放了一个dropdownlist控件.那么,问题就是:你如何去操作这个dropdownlist控件???? //对于gridview控件:  ...

最新文章

  1. C++太难学,怎么破?这本书给你指点迷津!
  2. 基于级联FFT的广义互相关算法在声源定位中的应用
  3. python爬取百度图片(用于深度学习中数据集的收集)
  4. nginx反代理服务器
  5. Microsoft Access、MySQL 以及 SQL Server 所使用的数据类型和范围。
  6. Linux跨平台远程控制
  7. 如何监控Android电视桌面,androidTV 电视桌面的效果
  8. mac mongodb可视化工具_MongoDB从立地到成佛(介绍、安装、增删改查)
  9. android创建构建方法,Android 应用程序构建实战+原理精讲
  10. 程序猿:我的未来,在哪里?
  11. 解压deb_Linux填坑记:很全面的解压和压缩命令集合
  12. 尚硅谷Linux视频学习建议贴及linux全套视频,运维版本180G高质量视频教程免费下,linux教程
  13. Wince6.0应用开发:二、模拟器的使用
  14. 蓝桥杯2020年第十一届Python省赛第五题-排序
  15. 硬盘、U盘、软盘之比较
  16. Nginx代理域名证书替换失效
  17. 计算机操作员初级试题及答案,计算机操作员初级考试试题
  18. 求与下面谓词公式等值的前束范式_离散数学课后答案
  19. [Kubic] Lines
  20. pandas -----变形(透视表、melt、stack、unstack),哑变量与因子变化

热门文章

  1. Java大数类自我需要掌握的
  2. 深度学习优化算法大全系列5:AdaDelta,RMSProp
  3. hadoop hdfs文件给其他账号授权
  4. tensorflow手动实现算法之三逻辑回归
  5. 记一次python分布式web开发(利用docker)
  6. python做后端速度慢吗_【后端开发】python如何提高运行速度
  7. linux进程的线程信息,Linux 下查看线程信息
  8. 电脑屏保海底世界_电脑游戏假面骑士kiva中文版
  9. springboot redis mysql 自动同步_BAT一线互联网常考面试题:Spring+并发编程+JVM+设计模式+Redis...
  10. qtreeview 点击二级节点弹出dialog_2019二级造价师开卷考?一顿操作猛如虎,一看分数59...