数据的动态合并和导出至EXCEL
最近一段时间都在处理数据的动态合并和导出EXCEL的问题,写个demo记录下,希望和我碰到同样问题的博友可以顺利解决;后面会提供demo下载链接。
(VS2012,ASP.NET)
一、主要解决以下问题:
1、根据业务逻辑动态合并table单元格
2、动态合并后序号重写
3、datatable导出excel
4、datatable导出excel特殊字符处理
5、在实际问题中可能还有少许BUG,自行调试
二、重要代码摘录:
1、前台获取table HTML代码:
<input type="hidden" runat="server" id="lblTableHtml" />
function getDataHtml() {
var table = document.getElementById("gridTable");
if (table != null) {
var html = table.innerHTML;
document.getElementById("lblTableHtml").value = html;
}
}
2、自定义合并单元格:
// 1、通过关联字段分组
for (int i = gridTable.Rows.Count - ; i > ; i--)
{
HtmlTableCell oCell_previous = gridTable.Rows[i - ].Cells[];
HtmlTableCell oCell = gridTable.Rows[i].Cells[];
if (oCell_previous != null && oCell != null)
{
if (oCell.InnerText == oCell_previous.InnerText)
{
for (int j = ; j <= ; j++)
{
HtmlTableCell oCell_previousI = gridTable.Rows[i - ].Cells[j];
HtmlTableCell oCellI = gridTable.Rows[i].Cells[j];
if (oCell_previousI != null && oCellI != null)
{
oCell_previousI.RowSpan = (oCell_previousI.RowSpan == -) ? : oCell_previousI.RowSpan;
oCellI.RowSpan = (oCellI.RowSpan == -) ? : oCellI.RowSpan;
} oCellI.Visible = false;
oCell_previousI.RowSpan += oCellI.RowSpan;
}
}
}
}
3、导出EXCEL逻辑:
Response.Clear();
Response.ContentType = "application/vnd.ms-excel";
string excelname = sFileName + DateTime.Now.ToString("yyyyMMddHHmmss");
Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(excelname, System.Text.Encoding.UTF8) + ".xls");
this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter writer = new System.Web.UI.HtmlTextWriter(oStringWriter);
System.Text.StringBuilder builder = new System.Text.StringBuilder();
builder.Append("<table border='1'>");
// 取出已经排好版的table
string sHtml = lblTableHtml.Value;
builder.Append(sHtml);
builder.Append("</table>");
writer.Write(builder.ToString());
writer.Close();
Response.Write(oStringWriter.ToString());
Response.End();
三、Demo下载链接:
http://files.cnblogs.com/files/zhaosx/ExcelExportDemo.zip
数据的动态合并和导出至EXCEL的更多相关文章
- vue中把table导出表格excel
1.首先下载2个js,我的百度网盘有 2.安装依赖 npm install -S file-saver xlsx(这里其实安装了2个依赖) npm install -D script-loader 3 ...
- Java实现PDF和Excel生成和数据动态插入以及导出
一.序言 Excel.PDF的导出.导入是我们工作中经常遇到的一个问题,刚好今天公司业务遇到了这个问题,顺便记个笔记以防下次遇到相同的问题而束手无策. 公司有这么两个需求: 需求一.给了一个表单,让把 ...
- java导出标题多行且合并单元格的EXCEL
场景:项目中遇到有需要导出Excel的需求,并且是多行标题且有合并单元格的,参考网上的文章,加上自己的理解,封装成了可自由扩展的导出工具 先上效果,再贴代码: 调用工具类进行导出: public st ...
- DataSet导出到Excel,并生成文件(C#实现,可合并行和列)
using System; using System.IO; using System.Data; using System.Reflection; using System.Diagnostics; ...
- C#开发---利用特性自定义数据导出到Excel
网上C#导出Excel的方法有很多.但用来用去感觉不够自动化.于是花了点时间,利用特性做了个比较通用的导出方法.只需要根据实体类,自动导出想要的数据 1.在NuGet上安装Aspose.Cells或 ...
- asp.net将数据导出到excel
本次应用datatable导出,若用gridview(假设gridview设为了分页显示)会出现只导出当前页的情况. protected void btnPrn_Click(object sender ...
- JAVA实现数据库数据导入/导出到Excel(POI)
准备工作: 1.导入POI包:POI下载地址http://mirrors.tuna.tsinghua.edu.cn/apache/poi/release/src/(重要) 如下 2.导入Java界面美 ...
- Delphi 数据导出到Excel
好多办公软件特别是财务软件,都需要配备把数据导出到Excel,下面就来介绍两种数据导出方法 1.ADODB导出查询结果(此方法需要安装Excel) 2.二维表数据导出(根据Excel文件结构生成二进制 ...
- 树结构关系的数据导出为excel
该文针对的是关于树结构的数据的导出,每一个节点都可以创建不定数的子节点,在选择好某个节点进行导出 时,会把该节点以及子节点的数据都导出来.导出后的excel的格式大概如下图的形式,这个是一个比较理想 ...
随机推荐
- Linux启动或禁止SSH用户及IP的登录
启动或禁止SSH用户登录 一般情况下,在使用Linux操作系统都不会去机房来操作机器,都是使用一些第三方的工具来操作. 比如使用SSH Secure File Transfer Client工具来传输 ...
- c3p0数据库连接池的使用
一.c3p0与dbcp区别 dbcp没有自动回收空闲连接的功能 c3p0有自动回收空闲连接功能 <C3P0是Hibernate3.0默认的自带数据库连接池,DBCP是Apache开发的数据库连接 ...
- 2.5.1 使用alertDialog
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...
- Android开发详解之onTouch和onClick详解
android组件中的onTouch,onClick,onLongClick事件发生先后顺序和关联: 一,onTouch返回false 首先是onTouch事件的down事件发生,此时,如果长按,触发 ...
- Linux Kernel 'perf_event.c'本地权限提升漏洞
漏洞版本: Linux Kernel 3.11-rc4 漏洞描述: Linux Kernel是一款开源的操作系统 Linux Kernel 'perf_event.c'存在一个安全漏洞,允许本地攻击者 ...
- Unity3d 基于物理渲染Physically-Based Rendering之实现
根据前文的例子http://blog.csdn.net/wolf96/article/details/44172243(不弄超链接了审核太慢)弄一下真正的基于物理的渲染逃了节课= =,弄了一下.公式和 ...
- 出现 HTTP Error 503. The service is unavailable 错误
今天修改一些配置后重启了IIS,兴高采烈的按下了回车.duang一下,HTTP Error 503. The service is unavailable,蹦出这行字,网站挂了. 没动别的竟然这样了. ...
- [Java] HashMap 导致的高 CPU 使用率
今天在生产环境遇到一个问题,Java 应用程序的 cpu 使用比例很高,导致整台机器的 cpu 使用率高达 90% ,正常情况下是 20% 左右. 把 Thread dump 导出来,利用 IBM T ...
- mvn archetyoe:generate -DarchetypeCatalog=internal
可以使用 $mvn archetype:generate -DarchetypeCatalog=internal archetypeCatalog表示插件使用的archetype元数据,默认值为rem ...
- Java虚拟机基础知识
写在前面 之前老大让做一些外包面试,我的问题很简单: 介绍一下工作中解决过比较有意思的问题. HashMap使用中需要注意的点. 第一个问题主要是想了解一下对方项目经验的含金量,第二个问题则是测试下是 ...