首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

导出页面表中数据到Excel中解决办法

2013-01-23 
导出页面表中数据到Excel中项目中遇到了一个这样的问题,业务处理大概是这样的,根据需求在页面选择相应字段

导出页面表中数据到Excel中
   项目中遇到了一个这样的问题,业务处理大概是这样的,根据需求在页面选择相应字段(数据库中的列),然后点击生成数据,会将选择的字段生成一个表(有分页),然后点击导出数据,将这个表中的数据导入Excel中去,如果选择的字段比较少,并且数据只有几千条的话,导出数据是没问题的,但是如果选择的字段很多,并且生成的数据有几万以上的话,有时候不能导出数据程序就终止了,或者速度很慢,我弄了好久还是不明白,应该怎样解决?请各位指导一下!我用的Sql Server 2008 R2,大概代码如下:
    //导出按钮
        $("#btnExportToExcel").click(function () {
            $("#spanConfirmContent").text("确定导出到Excel吗?");
            //弹出设置对话框
            $("#dialog-confirm").dialog({
                resizable: false,
                height: 150,
                width: 200,
                modal: true,
                title: '自定义导出',
                buttons: {
                    "确定": function () {
                        ExportToExcel(TableSql,500);
                        $(this).dialog("close");
                    },
                    "取消": function () {
                        $(this).dialog("close");
                    }
                }
            });



 function ExportToExcel(TableSql, Number1Time) {
        var FileName = Crowd + GetNowString();
        myAlertMessage("正在导出数据...",false);      

       var ExportNumber = RecordCount; //生成队列用的记录数量
       var ExportNumberInFact = 0; //实际导出记录数量
       var Number1TimeInFact = 0; //每次导出数量
       var SpareNumber = RecordCount % Number1Time;//最后的剩余记录数
      
       ExportNumber -= SpareNumber;
       Number1TimeInFact = SpareNumber;
       while (ExportNumber >= 0) {
           Number1TimeInFact = Number1Time;
           $(document).queue("ajaxRequests", function (i, j, k) {


               ExportNumber += Number1Time;
               $.ajax({
                   url: 'Handler/ExportToExcel.aspx', //?sqlString=' + encodeURI(TableSql) + '&ExportNumber=' + Number1TimeInFact + '&ExportStart=' + (ExportNumber + 1).toString(),
                   //async:false,
                   //start: ExportNumber += Number1Time,
                   data: "sqlString=" + encodeURI(TableSql) + "&ExportNumber=" + Number1TimeInFact + "&ExportStart=" + (ExportNumber + 1).toString() + "&FileName=" + encodeURI(FileName),
                   success: function (data) {

                       ExportNumberInFact += Number1Time;
                       $("#spanAlertMessage").text("正在导出数据...(" + ExportNumberInFact.toString() + "/" + RecordCount + ")")
                       AjaxWait = false;
                       if (ExportNumberInFact >= RecordCount) {
                           $("#dialog-modal").dialog("close");
                           $("#LinkExcelName").text(FileName)
                           $("#LinkExcelName").attr("href", data);
                       }
                       $(document).dequeue("ajaxRequests");
                   }
               });

           });

           // $(document).dequeue("ajaxRequests"); 
           ExportNumber -= Number1Time;
       }
        $(document).dequeue("ajaxRequests");
       
    } //导出Excel

excel sql?server
[解决办法]
可以导出到同一个Excel的不同sheet中吧

热点排行