實現easyui的datagrid匯出為excel
阿新 • • 發佈:2019-01-22
之前天智海網路有介紹過如何實現easyui裡datagrid內容的列印,今天給大家介紹下如何實現datagrid內容匯出為excel檔案。以下為程式碼實現:
export.js
[javascript] view plain copy print?- function ChangeToTable(printDatagrid) {
- var tableString = '<table cellspacing="0" class="pb">';
- var frozenColumns = printDatagrid.datagrid("options").frozenColumns;
- var columns = printDatagrid.datagrid("options").columns; // 得到columns物件
- var nameList = new Array();
- // 載入title
- if (typeof columns != 'undefined' && columns != '') {
- $(columns).each(function (index) {
- tableString += '\n<tr>';
- if
- for (var i = 0; i < frozenColumns[index].length; ++i) {
- if (!frozenColumns[index][i].hidden) {
- tableString += '\n<th width="' + frozenColumns[index][i].width +
- if (typeof frozenColumns[index][i].rowspan != 'undefined' && frozenColumns[index][i].rowspan > 1) {
- tableString += ' rowspan="' + frozenColumns[index][i].rowspan + '"';
- }
- if (typeof frozenColumns[index][i].colspan != 'undefined' && frozenColumns[index][i].colspan > 1) {
- tableString += ' colspan="' + frozenColumns[index][i].colspan + '"';
- }
- if (typeof frozenColumns[index][i].field != 'undefined' && frozenColumns[index][i].field != '') {
- nameList.push(frozenColumns[index][i]);
- }
- tableString += '>' + frozenColumns[0][i].title + '</th>';
- }
- }
- }
- for (var i = 0; i < columns[index].length; ++i) {
- if (!columns[index][i].hidden) {
- tableString += '\n<th width="' + columns[index][i].width + '"';
- if (typeof columns[index][i].rowspan != 'undefined' && columns[index][i].rowspan > 1) {
- tableString += ' rowspan="' + columns[index][i].rowspan + '"';
- }
- if (typeof columns[index][i].colspan != 'undefined' && columns[index][i].colspan > 1) {
- tableString += ' colspan="' + columns[index][i].colspan + '"';
- }
- if (typeof columns[index][i].field != 'undefined' && columns[index][i].field != '') {
- nameList.push(columns[index][i]);
- }
- tableString += '>' + columns[index][i].title + '</th>';
- }
- }
- tableString += '\n</tr>';
- });
- }
- // 載入內容
- var rows = printDatagrid.datagrid("getRows"); // 這段程式碼是獲取當前頁的所有行
- for (var i = 0; i < rows.length; ++i) {
- tableString += '\n<tr>';
- for (var j = 0; j < nameList.length; ++j) {
- var e = nameList[j].field.lastIndexOf('_0');
- tableString += '\n<td';
- if (nameList[j].align != 'undefined' && nameList[j].align != '') {
- tableString += ' style="text-align:' + nameList[j].align + ';"';
- }
- tableString += '>';
- if (e + 2 == nameList[j].field.length) {
- tableString += rows[i][nameList[j].field.substring(0, e)];
- }
- else
- tableString += rows[i][nameList[j].field];
- tableString += '</td>';
- }
- tableString += '\n</tr>';
- }
- tableString += '\n</table>';
- return tableString;
- }
- function Export(strXlsName, exportGrid) {
- var f = $('<form action="/export.aspx" method="post" id="fm1"></form>');
- var i = $('<input type="hidden" id="txtContent" name="txtContent" />');
- var l = $('<input type="hidden" id="txtName" name="txtName" />');
- i.val(ChangeToTable(exportGrid));
- i.appendTo(f);
- l.val(strXlsName);
- l.appendTo(f);
- f.appendTo(document.body).submit();
- document.body.removeChild(f);
- }
function ChangeToTable(printDatagrid) {
var tableString = '<table cellspacing="0" class="pb">';
var frozenColumns = printDatagrid.datagrid("options").frozenColumns; // 得到frozenColumns物件
var columns = printDatagrid.datagrid("options").columns; // 得到columns物件
var nameList = new Array();
// 載入title
if (typeof columns != 'undefined' && columns != '') {
$(columns).each(function (index) {
tableString += '\n<tr>';
if (typeof frozenColumns != 'undefined' && typeof frozenColumns[index] != 'undefined') {
for (var i = 0; i < frozenColumns[index].length; ++i) {
if (!frozenColumns[index][i].hidden) {
tableString += '\n<th width="' + frozenColumns[index][i].width + '"';
if (typeof frozenColumns[index][i].rowspan != 'undefined' && frozenColumns[index][i].rowspan > 1) {
tableString += ' rowspan="' + frozenColumns[index][i].rowspan + '"';
}
if (typeof frozenColumns[index][i].colspan != 'undefined' && frozenColumns[index][i].colspan > 1) {
tableString += ' colspan="' + frozenColumns[index][i].colspan + '"';
}
if (typeof frozenColumns[index][i].field != 'undefined' && frozenColumns[index][i].field != '') {
nameList.push(frozenColumns[index][i]);
}
tableString += '>' + frozenColumns[0][i].title + '</th>';
}
}
}
for (var i = 0; i < columns[index].length; ++i) {
if (!columns[index][i].hidden) {
tableString += '\n<th width="' + columns[index][i].width + '"';
if (typeof columns[index][i].rowspan != 'undefined' && columns[index][i].rowspan > 1) {
tableString += ' rowspan="' + columns[index][i].rowspan + '"';
}
if (typeof columns[index][i].colspan != 'undefined' && columns[index][i].colspan > 1) {
tableString += ' colspan="' + columns[index][i].colspan + '"';
}
if (typeof columns[index][i].field != 'undefined' && columns[index][i].field != '') {
nameList.push(columns[index][i]);
}
tableString += '>' + columns[index][i].title + '</th>';
}
}
tableString += '\n</tr>';
});
}
// 載入內容
var rows = printDatagrid.datagrid("getRows"); // 這段程式碼是獲取當前頁的所有行
for (var i = 0; i < rows.length; ++i) {
tableString += '\n<tr>';
for (var j = 0; j < nameList.length; ++j) {
var e = nameList[j].field.lastIndexOf('_0');
tableString += '\n<td';
if (nameList[j].align != 'undefined' && nameList[j].align != '') {
tableString += ' style="text-align:' + nameList[j].align + ';"';
}
tableString += '>';
if (e + 2 == nameList[j].field.length) {
tableString += rows[i][nameList[j].field.substring(0, e)];
}
else
tableString += rows[i][nameList[j].field];
tableString += '</td>';
}
tableString += '\n</tr>';
}
tableString += '\n</table>';
return tableString;
}
function Export(strXlsName, exportGrid) {
var f = $('<form action="/export.aspx" method="post" id="fm1"></form>');
var i = $('<input type="hidden" id="txtContent" name="txtContent" />');
var l = $('<input type="hidden" id="txtName" name="txtName" />');
i.val(ChangeToTable(exportGrid));
i.appendTo(f);
l.val(strXlsName);
l.appendTo(f);
f.appendTo(document.body).submit();
document.body.removeChild(f);
}
export.aspx
[csharp] view plain copy print?
- protectedvoid Page_Load(object sender, EventArgs e)
- {
- Response.Clear();
- Response.Buffer = true;
- Response.Charset = "utf-8";
- Response.ContentEncoding = System.Text.Encoding.UTF8;
- Response.AppendHeader("content-disposition", "attachment;filename=\"" + HttpUtility.HtmlEncode(Request["txtName"]??DateTime.Now.ToString("yyyyMMdd")) + ".xls\"");
- Response.ContentType = "Application/ms-excel";
- Response.Write("<html>\n<head>\n");
- Response.Write("<style type=\"text/css\">\n.pb{font-size:13px;border-collapse:collapse;} "+
- "\n.pb th{font-weight:bold;text-align:center;border:0.5pt solid windowtext;padding:2px;} " +
- "\n.pb td{border:0.5pt solid windowtext;padding:2px;}\n</style>\n</head>\n");
- Response.Write("<body>\n" + Request["txtContent"] + "\n</body>\n</html>");
- Response.Flush();
- Response.End();
- }
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "utf-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("content-disposition", "attachment;filename=\"" + HttpUtility.HtmlEncode(Request["txtName"]??DateTime.Now.ToString("yyyyMMdd")) + ".xls\"");
Response.ContentType = "Application/ms-excel";
Response.Write("<html>\n<head>\n");
Response.Write("<style type=\"text/css\">\n.pb{font-size:13px;border-collapse:collapse;} "+
"\n.pb th{font-weight:bold;text-align:center;border:0.5pt solid windowtext;padding:2px;} " +
"\n.pb td{border:0.5pt solid windowtext;padding:2px;}\n</style>\n</head>\n");
Response.Write("<body>\n" + Request["txtContent"] + "\n</body>\n</html>");
Response.Flush();
Response.End();
}
其中export.aspx為了防止前臺頁面內容干擾,前臺頁面只留:
[html] view plain copy print?
- <%@ Page Language="C#"AutoEventWireup="true"CodeBehind="export.aspx.cs"Inherits="newland.WebUI.export"ValidateRequest="false" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="export.aspx.cs" Inherits="newland.WebUI.export" ValidateRequest="false" %>
這句話,其他的全部刪除。
呼叫方法:
[html] view plain copy print?- <ahref="javascript:void(0);"onclick="Export('匯出excel', $('#grid'));">匯出</a>
<a href="javascript:void(0);" onclick="Export('匯出excel', $('#grid'));">匯出</a>
轉載自:http://www.tzhtec.com/art/e058ffd7fa.aspx