先上图,如图所示导出所有查询出的数据

用的是AspNetPager分页控件,这个导出方法,不受分页和gridview列中数据的约束,可以导出您想导出的数据

首先前台页面代码,lblink即为导出excel的显示lable

   <div class="span2">
<div class="input-group">
<asp:Button ID="btnSearch" runat="server" CssClass="btn btn-default" Text="查询" OnClick="btnSearch_Click" />
<asp:Label ID="lblink" CssClass="label" runat="server" Visible="False"></asp:Label>
</div>
</div>

后台代码中,首先查询事件中声明一个全局变量excelInt ,任意设置一个数

 protected void btnSearch_Click(object sender, EventArgs e)
{
excelInt = ;
lblink.Visible = true;//设置lblink为不可见
this.AspNetPager1.CurrentPageIndex = ;
GetData();
}

在绑定事件中GetData(),设置显示Excel的导出内容,selectdata为excel的导出方法,里面是传入的查询条件的参数

 if (excelInt == )
{
selectdata(parmAgentName, parmIsState, parmStuName, parmRcc, parmContractName);
}
  private void selectdata(string parmAgentName, string parmIsState, string parmStuName, string parmRcc, string parmContractName)
{
string filepath = Request.MapPath("/") + @"COD\report\";//在该项目下建的一个文件夹
DataRow rowPart;
System.Data.DataTable workTable = new System.Data.DataTable("LX");
workTable.Columns.Add("代理名称");//excel导出的表头
workTable.Columns.Add("SID");
workTable.Columns.Add("学生名称");
workTable.Columns.Add("学生生日");
workTable.Columns.Add("合同名称");
workTable.Columns.Add("币种");
workTable.Columns.Add("到款金额");
workTable.Columns.Add("到款时间"); workTable.Columns.Add("签约总人数");
workTable.Columns.Add("返佣百分比");
workTable.Columns.Add("应返金额");
workTable.Columns.Add("汇率");
workTable.Columns.Add("应返(RMB)金额"); workTable.Columns.Add("返佣状态"); var dsPart = DB.Context.FromProc("proc_AgentMoeny")//通过储存过程查询满足条件的数据
.AddInParameter("@PageCurrent", DbType.Int32, AspNetPager1.CurrentPageIndex)
.AddInParameter("@PageSize", DbType.Int32, AspNetPager1.PageSize)
.AddInParameter("@AgentName", DbType.String, parmAgentName)
.AddInParameter("@IsState", DbType.String, "")
.AddInParameter("@StuName", DbType.String, parmStuName)
.AddInParameter("@PinYin", DbType.String, "")
.AddInParameter("@Rcc", DbType.String, parmRcc)
.AddInParameter("@ContractName", DbType.String, parmContractName)
.AddInParameter("@AgentID", DbType.Int32, )
.AddInParameter("@ContractID", DbType.Int32, )
.AddInParameter("@RMoneyDate", DbType.String, "")
.AddInParameter("@sp", DbType.Int32, )
.ToDataSet();
if (dsPart != null)
{
for (int i = ; i < dsPart.Tables[].Rows.Count; i++)
{
rowPart = workTable.NewRow();
rowPart["代理名称"] = dsPart.Tables[].Rows[i]["name"].ToString();
rowPart["SID"] = dsPart.Tables[].Rows[i]["SID"].ToString();
rowPart["学生名称"] = dsPart.Tables[].Rows[i]["StuName"].ToString();
rowPart["学生生日"] = dsPart.Tables[].Rows[i]["birthday"].ToString();
rowPart["合同名称"] = dsPart.Tables[].Rows[i]["contractName"].ToString();
rowPart["币种"] = dsPart.Tables[].Rows[i]["ReturnCommissionCurrency"].ToString();
rowPart["到款金额"] = dsPart.Tables[].Rows[i]["ReturnCommission"].ToString();
rowPart["到款时间"] = dsPart.Tables[].Rows[i]["InvoiceReceiveDate"].ToString();
//有数据是数据库中无法直接获取的,通过求出的数据再次查询获取所需的数据
rowPart["签约总人数"] = Com.GetStuCount(dsPart.Tables[].Rows[i]["AgentID"].ToString(), dsPart.Tables[].Rows[i]["ContractID"].ToString());
rowPart["返佣百分比"] = Com.GetPercent(Convert.ToInt32(rowPart["签约总人数"].ToString()), dsPart.Tables[].Rows[i]["ContractID"].ToString());
rowPart["应返金额"] = Com.GetReturnMoney(Convert.ToDecimal(dsPart.Tables[].Rows[i]["ReturnCommission"].ToString()), Convert.ToDecimal(rowPart["返佣百分比"].ToString()));
rowPart["汇率"] = string.IsNullOrEmpty(dsPart.Tables[].Rows[i]["CurrRate"].ToString()) == true ? "" : dsPart.Tables[].Rows[i]["CurrRate"].ToString();
rowPart["应返(RMB)金额"] = Com.GetReturnRMB(Convert.ToDecimal(rowPart["汇率"].ToString()), Convert.ToDecimal(rowPart["应返金额"].ToString()));
if (dsPart.Tables[].Rows[i]["IsState"].ToString() == "")//返佣状态在数据库中存储的为数字,转为相应的文字
{
rowPart["返佣状态"] = "确认到款";
}
else if (dsPart.Tables[].Rows[i]["IsState"].ToString() == "")
{
rowPart["返佣状态"] = "已标识";
}
else if (dsPart.Tables[].Rows[i]["IsState"].ToString() == "")
{
rowPart["返佣状态"] = "已付款";
}
else
{
rowPart["返佣状态"] = "未确认";
} workTable.Rows.Add(rowPart);
}
}
string filenamePart = Com.ExportToTxt(workTable, filepath);
this.lblink.Text = "<a href='/COD/report/" + filenamePart + "' target=_blank>点击导出资源明细</a>"; }

上面所用到的方法几个方法

private const string CSVPOSTFIX = ".xls"; 

/// <summary>
/// 把数据文件导入到.txt文件
/// </summary>
/// <param name="ds"></param>
public static string ExportToTxt(DataTable table, string path)
{ string tempFileName = null;
tempFileName = GetTempFileName();
string filepath = path + tempFileName + CSVPOSTFIX;
string filename = tempFileName + CSVPOSTFIX;
System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.Create);
System.IO.StreamWriter textFile = new System.IO.StreamWriter(fs, System.Text.Encoding.Unicode);
//把Dataset中的数据写入.txt文件中 //统计dataset中当前表的行数
int row = table.Rows.Count; //统计dataset中当前表的列数
int column = table.Columns.Count; //把dataset中当前表的字段名写入.txt文件中
for (int i = ; i < column; i++)
{
if (i < column - )
textFile.Write(table.Columns[i].ColumnName.ToString().Replace("\r\n", " ").Replace("\t", " ") + "\t");
else
textFile.Write(table.Columns[i].ColumnName.ToString().Replace("\r\n", " ").Replace("\t", " ") + "\n");
}
//把dataset中当前表的数据写入.txt文件中
for (int i = ; i < row; i++)
{
for (int j = ; j < column; j++)
{
if (j < column - )
textFile.Write(table.Rows[i][j].ToString().Replace("\r\n", " ").Replace("\t", " ") + "\t");
else
textFile.Write(table.Rows[i][j].ToString().Replace("\r\n", " ").Replace("\t", " ") + "\n");
}
}
//关闭当前的StreamWriter流
textFile.Close();
return filename;
}
public static string GetTempFileName()
{
return DateTime.Now.ToString("yyyyMMddhhmmssfff");
}

其中create对应的类为

#region 程序集 mscorlib.dll, v2.0.0.0
// C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll
#endregion using System;
using System.Runtime.InteropServices; namespace System.IO
{
// 摘要:
// 指定操作系统打开文件的方式。
[Serializable]
[ComVisible(true)]
public enum FileMode
{
// 摘要:
// 指定操作系统应创建新文件。此操作需要 System.Security.Permissions.FileIOPermissionAccess.Write。如果文件已存在,则将引发
// System.IO.IOException。
CreateNew = ,
//
// 摘要:
// 指定操作系统应创建新文件。如果文件已存在,它将被覆盖。这要求 System.Security.Permissions.FileIOPermissionAccess.Write。System.IO.FileMode.Create
// 等效于这样的请求:如果文件不存在,则使用 System.IO.FileMode.CreateNew;否则使用 System.IO.FileMode.Truncate。
Create = ,
//
// 摘要:
// 指定操作系统应打开现有文件。打开文件的能力取决于 System.IO.FileAccess 所指定的值。如果该文件不存在,则引发 System.IO.FileNotFoundException。
Open = ,
//
// 摘要:
// 指定操作系统应打开文件(如果文件存在);否则,应创建新文件。如果用 FileAccess.Read 打开文件,则需要 System.Security.Permissions.FileIOPermissionAccess.Read。如果文件访问为
// FileAccess.Write,则需要 System.Security.Permissions.FileIOPermissionAccess.Write。如果用
// FileAccess.ReadWrite 打开文件,则同时需要 System.Security.Permissions.FileIOPermissionAccess.Read
// 和 System.Security.Permissions.FileIOPermissionAccess.Write。 如果文件访问为 FileAccess.Append,则需要
// System.Security.Permissions.FileIOPermissionAccess.Append。
OpenOrCreate = ,
//
// 摘要:
// 指定操作系统应打开现有文件。文件一旦打开,就将被截断为零字节大小。此操作需要 System.Security.Permissions.FileIOPermissionAccess.Write。试图从使用
// Truncate 打开的文件中进行读取将导致异常。
Truncate = ,
//
// 摘要:
// 打开现有文件并查找到文件尾,或创建新文件。FileMode.Append 只能同 FileAccess.Write 一起使用。试图查找文件尾之前的位置时会引发
// System.IO.IOException,并且任何试图读取的操作都会失败并引发 System.NotSupportedException。
Append = ,
}
}

自定义分页Gridview中Excel导出的更多相关文章

  1. 从GridView中直接导出数据到Excel文件 处理导出乱码 类型“GridView”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。”的异常

    导出到Excel方法: <span style="color: rgb(0, 0, 255);">public</span> <span style= ...

  2. java中Excel导出

    转载:https://www.cnblogs.com/gudongcheng/p/8268909.html,稍加修改了 https://www.cnblogs.com/hanfeihanfei/p/7 ...

  3. jeecg中excel导出字段判空处理

    我们清楚,jeecg 导出 excel 采用的是 easypoi,不知道是否遇到过这种情况: 我们以一个实体属性为例: @Excel(name="问题分类",dicCode=&qu ...

  4. .net中从GridView中导出数据到excel(详细)

    1,创建数据源 找到要导出的GridView中的数据. 2,重写VerifyRenderingInServerForm方法. public override void VerifyRenderingI ...

  5. 将GridView中的数据导出到Excel代码与注意事项

    //gv:需要导出数据的GridView,filename:导出excel文件名 public void ExportToExcel(GridView gv, string filename) { s ...

  6. html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式

    先上代码   <script type="text/javascript" language="javascript">   var idTmr; ...

  7. 将gridview 的数据导出EXCEL

    gridview数据 单击“导出EXCEL”按钮后        1.在上面的代码中,先将gridview绑定到指定的数据源中,然后在button按钮(用来做导出到EXCEL的)的事件中,写入相关的代 ...

  8. GridView自定义分页样式(上一页,下一页,到第几页)

    今天要为网站做一个文章列表,发现GridView的分页样式很难看,于是结合网上的例子,自己做了一个.不是很美观,不过还是很实用的,先看下效果吧,如图(1). 图(1)GridView分页效果 自定义G ...

  9. 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

    并发编程概述   前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...

随机推荐

  1. IE6-能让png图片有透明效果的js代码

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. Iframe 自适应高度并实时监控高度变化的js代码

    不得不用到iframe,且被强烈要求不能让它出现滚动条!嵌入的页面肯定是高度不一的,页面中也不能出现大片空白,所以也不能写死高度!真是麻鬼烦啊!google N次 + 百度M次 + 试验了1605次之 ...

  3. zoj-3782-Ternary Calculation

    题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5269 题目很简单,直接把所有情况列出来. 我的AC代码 #inclu ...

  4. Flex 各种校验

    Flex 各种校验: 参考:http://blog.csdn.net/jerry_bj/article/details/5650469 参考正则表达式:http://www.cnblogs.com/f ...

  5. C# winform项目中ListView控件使用CheckBoxes属性实现单选功能

    C# winform项目中ListView控件使用CheckBoxes属性实现单选功能 在做项目时需要使用ListView控件的CheckBoxes属性显示,还要在点击行时自动选中CheckBoxes ...

  6. Spring生命周期各种接口使用

    1,BeanPostProcessor接口:不能在POJO上面使用,需要单独找一个类进行使用:如果在POJO上面实现了此接口,在实现了其他*Aware接口之后,这个接口方法将不会被调用:2, POJO ...

  7. FP Tree算法原理总结

    在Apriori算法原理总结中,我们对Apriori算法的原理做了总结.作为一个挖掘频繁项集的算法,Apriori算法需要多次扫描数据,I/O是很大的瓶颈.为了解决这个问题,FP Tree算法(也称F ...

  8. Fiddler 模拟请求的操作方法

    此文记录使用Fidder Web Debugger工具,模拟请求的操作步骤! 首先简述一下fiddler的使用: 1.下载安装Fidder抓包工具. 2.打开fiddler发现有左边的栏有请求的url ...

  9. Callback Promise Generator Async-Await 和异常处理的演进

    根据笔者的项目经验,本文讲解了从函数回调,到 es7 规范的异常处理方式.异常处理的优雅性随着规范的进步越来越高,不要害怕使用 try catch,不能回避异常处理. 我们需要一个健全的架构捕获所有同 ...

  10. Vmware虚拟机安装Ubuntu 16.04 LTS(长期支持)版本+VMware tools安装

    今天用VMware虚拟机安装了Ubuntu 16.04,过程用点繁琐,顺便又安装了VMware tools,这样就可以全屏显示Ubuntu系统了,下面是具体的安装过程! 第一步:准备工作 1.下载Ub ...