有人知道将数据从 jqgrid 导出到 excel 的方法吗?
我想用这个我认为很棒的 jqgrid 做一个报告。但我需要以某种方式保存或打印此报告,因为要保留信息。有人知道有什么办法吗??
有人知道将数据从 jqgrid 导出到 excel 的方法吗?
我想用这个我认为很棒的 jqgrid 做一个报告。但我需要以某种方式保存或打印此报告,因为要保留信息。有人知道有什么办法吗??
这是我的方法,只需将此代码添加到您的 js/html 文件中
$("#list").jqGrid('navGrid', '#pager',{view:true, del:false, add:false, edit:false, excel:true})
.navButtonAdd('#pager',{
caption:"Export to Excel",
buttonicon:"ui-icon-save",
onClickButton: function(){
exportExcel();
},
position:"last"
});
function exportExcel()
{
var mya=new Array();
mya=$("#list").getDataIDs(); // Get All IDs
var data=$("#list").getRowData(mya[0]); // Get First row to get the labels
var colNames=new Array();
var ii=0;
for (var i in data){colNames[ii++]=i;} // capture col names
var html="";
for(i=0;i<mya.length;i++)
{
data=$("#list").getRowData(mya[i]); // get each row
for(j=0;j<colNames.length;j++)
{
html=html+data[colNames[j]]+"\t"; // output each column as tab delimited
}
html=html+"\n"; // output each row with end of line
}
html=html+"\n"; // end of line at the end
document.forms[0].csvBuffer.value=html;
document.forms[0].method='POST';
document.forms[0].action='csvExport.php'; // send it to server which will open this contents in excel file
document.forms[0].target='_blank';
document.forms[0].submit();
}
PHP 脚本
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=file.xls");
header("Pragma: no-cache");
$buffer = $_POST['csvBuffer'];
try{
echo $buffer;
}catch(Exception $e){
}
非常好的问题,我也对此一头雾水。我通过选择 Felix 的建议来完成它,让我通过在您的 html 正文中添加以下行来完成它。
<form method="post" action="csvExport.php">
<input type="hidden" name="csvBuffer" id="csvBuffer" value="" />
</form>
我唯一的问题是导出的 excel 文件不包括我在 jqgrid 中的列名,还有没有办法在导出到 excel 文件时排除特定或多个列?
谢谢~
很棒的功能!
我已经做出了改变。
函数导出Excel($id){ var 键=[], ii=0, rows=""; var ids=$id.getDataIDs(); //获取所有ID var row=$id.getRowData(ids[0]); // 获取第一行以获取标签 for (var k in row) { 键[ii++]=k; // 捕获列名 行=行+k+"\t"; // 将每列输出为制表符分隔 } 行=行+“\n”;// 输出带有行尾的标题 for(i=0;i<ids.length;i++) { 行=$id.getRowData(ids[i]); // 获取每一行 for(j=0;j<keys.length;j++) rows=rows+row[keys[j]]+"\t"; // 将每一行输出为制表符分隔 行=行+“\n”;// 以行尾输出每一行 } 行=行+“\n”;// 行尾在最后 var form = "<form name='csvexportform' action='"+php_path+"csvexport.php' method='post'>"; form = form + "<input type='hidden' name='csvBuffer' value='"+rows+"'>"; form = form + "</form><script>document.csvexportform.submit();</sc"+"ript>"; OpenWindow=window.open('', ''); OpenWindow.document.write(form); OpenWindow.document.close(); } 功能 gridcsvexport(id) { $('#'+id).jqGrid('navButtonAdd','#'+id+'_pager',{ 标题:'', 标题:'出口', buttonicon:'ui-icon-newwin', 位置:'最后', onClickButton:function (){ 导出Excel($(this)); } }); }
这是一个巧妙的解决方案,可以在jqGrid
不调用脚本的情况下将数据保存为 excel 表php
:(您只需要使用GridID
和 可选的来调用此函数Filename
)
var createExcelFromGrid = function(gridID,filename) {
var grid = $('#' + gridID);
var rowIDList = grid.getDataIDs();
var row = grid.getRowData(rowIDList[0]);
var colNames = [];
var i = 0;
for(var cName in row) {
colNames[i++] = cName; // Capture Column Names
}
var html = "";
for(var j=0;j<rowIDList.length;j++) {
row = grid.getRowData(rowIDList[j]); // Get Each Row
for(var i = 0 ; i<colNames.length ; i++ ) {
html += row[colNames[i]] + ';'; // Create a CSV delimited with ;
}
html += '\n';
}
html += '\n';
var a = document.createElement('a');
a.id = 'ExcelDL';
a.href = 'data:application/vnd.ms-excel,' + html;
a.download = filename ? filename + ".xls" : 'DataList.xls';
document.body.appendChild(a);
a.click(); // Downloads the excel document
document.getElementById('ExcelDL').remove();
}
我们首先创建一个CSV
用 分隔的字符串;
。然后anchor
创建具有某些属性的标签。最后click
被调用a
来下载文件。
你可以看看几个 excel MIME 类型:MIME 类型列表
我解决了您的问题。现在我可以使用列名导出数据 excel 请参考我的代码。
function exportExcel()
{
var mya=new Array();
mya=$("#tblnoupdate").getDataIDs(); // Get All IDs
var data=$("#tblnoupdate").getRowData(mya[0]); // Get First row to get the labels
var colNames=new Array();
var ii=0;
for (var i in data){colNames[ii++]=i;} // capture col names
var html="";
for(k=0;k<colNames.length;k++)
{
html=html+colNames[k]+"\t"; // output each Column as tab delimited
}
html=html+"\n"; // Output header with end of line
for(i=0;i<mya.length;i++)
{
data=$("#tblnoupdate").getRowData(mya[i]); // get each row
for(j=0;j<colNames.length;j++)
{
html=html+data[colNames[j]]+"\t"; // output each Row as tab delimited
}
html=html+"\n"; // output each row with end of line
}
html=html+"\n"; // end of line at the end
document.forms[0].csvBuffer.value=html;
document.forms[0].method='POST';
document.forms[0].action='<?php echo $baseurl;?>csvexport.php'; // send it to server which will open this contents in excel file
document.forms[0].target='_blank';
document.forms[0].submit();
}
如果您遇到任何问题,请告诉我。
创建一个名为“csvBuffer”的表单和一个隐藏元素。该元素由函数设置。我不得不换线
html = html+"\n"
至
html = html+"\\n"
为了正确地逃脱它。