EasyUI Datagrid 를 Excel 로 내 보 내기 (frozenColumns 열 포함 하지 않 음)

 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  

2. 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>'

3. 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: 보충
우 리 는 엑셀 을 내 보 낼 때 긴 숫자 가 과학 계수 법 으로 바 뀌 는 상황 을 만 날 수 있다!
 sb.Append("<style>td{mso-number-format:\"\\@\";}</style>");

table 탭 에 위 스타일 몇 개 만 추가 하면 됩 니 다.

좋은 웹페이지 즐겨찾기