自定义分页Gridview中Excel导出

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

用的是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 = 3;
            lblink.Visible = true;//设置lblink为不可见
            this.AspNetPager1.CurrentPageIndex = 1;
            GetData();
        }

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

 if (excelInt == 3)
            {
                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, "12")
             .AddInParameter("@StuName", DbType.String, parmStuName)
             .AddInParameter("@PinYin", DbType.String, "")
             .AddInParameter("@Rcc", DbType.String, parmRcc)
             .AddInParameter("@ContractName", DbType.String, parmContractName)
             .AddInParameter("@AgentID", DbType.Int32, 0)
             .AddInParameter("@ContractID", DbType.Int32, 0)
             .AddInParameter("@RMoneyDate", DbType.String, "")
             .AddInParameter("@sp", DbType.Int32, 4)
             .ToDataSet();
            if (dsPart != null)
            {
                for (int i = 0; i < dsPart.Tables[0].Rows.Count; i++)
                {
                    rowPart = workTable.NewRow();
                    rowPart["代理名称"] = dsPart.Tables[0].Rows[i]["name"].ToString();
                    rowPart["SID"] = dsPart.Tables[0].Rows[i]["SID"].ToString();
                    rowPart["学生名称"] = dsPart.Tables[0].Rows[i]["StuName"].ToString();
                    rowPart["学生生日"] = dsPart.Tables[0].Rows[i]["birthday"].ToString();
                    rowPart["合同名称"] = dsPart.Tables[0].Rows[i]["contractName"].ToString();
                    rowPart["币种"] = dsPart.Tables[0].Rows[i]["ReturnCommissionCurrency"].ToString();
                    rowPart["到款金额"] = dsPart.Tables[0].Rows[i]["ReturnCommission"].ToString();
                    rowPart["到款时间"] = dsPart.Tables[0].Rows[i]["InvoiceReceiveDate"].ToString();
//有数据是数据库中无法直接获取的,通过求出的数据再次查询获取所需的数据 rowPart[
"签约总人数"] = Com.GetStuCount(dsPart.Tables[0].Rows[i]["AgentID"].ToString(), dsPart.Tables[0].Rows[i]["ContractID"].ToString()); rowPart["返佣百分比"] = Com.GetPercent(Convert.ToInt32(rowPart["签约总人数"].ToString()), dsPart.Tables[0].Rows[i]["ContractID"].ToString()); rowPart["应返金额"] = Com.GetReturnMoney(Convert.ToDecimal(dsPart.Tables[0].Rows[i]["ReturnCommission"].ToString()), Convert.ToDecimal(rowPart["返佣百分比"].ToString())); rowPart["汇率"] = string.IsNullOrEmpty(dsPart.Tables[0].Rows[i]["CurrRate"].ToString()) == true ? "0" : dsPart.Tables[0].Rows[i]["CurrRate"].ToString(); rowPart["应返(RMB)金额"] = Com.GetReturnRMB(Convert.ToDecimal(rowPart["汇率"].ToString()), Convert.ToDecimal(rowPart["应返金额"].ToString())); if (dsPart.Tables[0].Rows[i]["IsState"].ToString() == "1")//返佣状态在数据库中存储的为数字,转为相应的文字 { rowPart["返佣状态"] = "确认到款"; } else if (dsPart.Tables[0].Rows[i]["IsState"].ToString() == "2") { rowPart["返佣状态"] = "已标识"; } else if (dsPart.Tables[0].Rows[i]["IsState"].ToString() == "3") { 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 = 0; i < column; i++) { if (i < column - 1) 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 = 0; i < row; i++) { for (int j = 0; j < column; j++) { if (j < column - 1) 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 = 1,
        //
        // 摘要:
        //     指定操作系统应创建新文件。如果文件已存在,它将被覆盖。这要求 System.Security.Permissions.FileIOPermissionAccess.Write。System.IO.FileMode.Create
        //     等效于这样的请求:如果文件不存在,则使用 System.IO.FileMode.CreateNew;否则使用 System.IO.FileMode.Truncate。
        Create = 2,
        //
        // 摘要:
        //     指定操作系统应打开现有文件。打开文件的能力取决于 System.IO.FileAccess 所指定的值。如果该文件不存在,则引发 System.IO.FileNotFoundException。
        Open = 3,
        //
        // 摘要:
        //     指定操作系统应打开文件(如果文件存在);否则,应创建新文件。如果用 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 = 4,
        //
        // 摘要:
        //     指定操作系统应打开现有文件。文件一旦打开,就将被截断为零字节大小。此操作需要 System.Security.Permissions.FileIOPermissionAccess.Write。试图从使用
        //     Truncate 打开的文件中进行读取将导致异常。
        Truncate = 5,
        //
        // 摘要:
        //     打开现有文件并查找到文件尾,或创建新文件。FileMode.Append 只能同 FileAccess.Write 一起使用。试图查找文件尾之前的位置时会引发
        //     System.IO.IOException,并且任何试图读取的操作都会失败并引发 System.NotSupportedException。
        Append = 6,
    }
}

 

转载于:https://www.cnblogs.com/sunping177/p/6521999.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值