1   var tableString = \'<table border="1" bordercolor="#D7D7D7">\';  
 2    var columns = printDatagrid.datagrid("options").columns;    // 得到columns对象  
 3   var nameList = new Array();//定义一个数组接受columns的所有值
 4               // 载入title  
 5               if (typeof columns != \'undefined\' && columns != \'\') {
 6                   $(columns).each(function (index) {
 7                      tableString += \'<tr>\';
 8                       for (var i = 0; i < columns[index].length; ++i) {
 9                           if (!columns[index][i].hidden) {
10                              tableString += \'<th\';
11                             if (typeof columns[index][i].field != \'undefined\' && columns[index][i].field != \'\') {
12                                 nameList.push(columns[index][i]);
13                              }
14                              tableString += \'>\' + columns[index][i].title + \'</th>\';
15                          }
16                      }
17                      tableString += \'</tr>\';
18                  });
19              }
20 
21 注:printDatagrid是dg的JQ对象

二、读取dg正文内容;

/ 载入内容  
 2             var rows = printDatagrid.datagrid("getRows"); // 这段代码是获取当前页的所有行  
 3             for (var i = 0; i < rows.length; ++i) {
 4                 tableString += \'<tr>\';
 5                 for (var j = 0; j < nameList.length; ++j) {
 6                     tableString += \'<td\';
 7                     tableString += \'>\';
 8                     if (typeof (rows[i][nameList[j].field]) == "undefined") {
 9                         tableString += " "
10                     } else {
11                         tableString += rows[i][nameList[j].field];
12                     }
13                     tableString += \'</td>\';
14                 }
15                 tableString += \'</tr>\';
16             }
17             tableString += \'</table>\'
复制代码

三、由于ajax的返回类型没有流类型,所以用提交form表单的形式向后台传数据,其中参数要用encodeURI( )转码,否则html标签是传不到后台的

1 var options = $("#dg").datagrid(\'getPager\').pagination(\'options\');
2             var f = $(\'<form action="../handler/dgtoexcel.ashx" method="post" id="fm1"></form>\');
3             var i = $(\'<input type="hidden" id="contexts" name="contexts" />\'); //主题内容
4           var pn = $(\'<input type="hidden" id="txtname" name="txtname" />\'); //文件名    
5          i.val(encodeURI(tableid));
6             i.appendTo(f);
7             pn.val(encodeURI(options.pageNumber));
8             pn.appendTo(f);       
9  f.appendTo(document.body).submit();     提交表单 

后台就很简单了,这里就不写了。对了request获取的参数要对参数UrlEncode解码,然后输出文件流 文件名拓展名得是  .xls

PS:补充

我们在导出Excel的时候会遇到长数字会转换成科学计数法的情况!

 sb.Append("<style>td{mso-number-format:\"\\@\";}</style>");

只需要在table标签加入上述样式几即可

 

版权声明:本文为slqd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/slqd/p/4897900.html