导出页面表中数据到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) {
项目中遇到了一个这样的问题,业务处理大概是这样的,根据需求在页面选择相应字段(数据库中的列),然后点击生成数据,会将选择的字段生成一个表(有分页),然后点击导出数据,将这个表中的数据导入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) {