php - 无法将 jqgrid 表导出为 excel/pdf。

标签 php jquery jqgrid

我成功创建了一个小的 jqgrid 表。我正在尝试使用 Jquery 将此表导出到 Excel 或 pdf 文件。我是 jquery 和 jqgrid 的新手。有人可以让我知道代码中有什么问题吗?我真的很感激一些帮助或建议。

我在网上找到了导出功能。它说我必须使用网格 id 调用这个函数。我做错了什么吗?

export.php 文件:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<link href="CSS/CalibrationKit.css" rel="stylesheet" type="text/css">

<!-- ------------------------JQGRID files-------------------------------- -->
<link rel="stylesheet" type="text/css" media="screen" href="jquery/css/jquery-ui-1.7.1.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />
<script src="jquery/js/jquery-1.11.0.min.js" type="text/javascript"></script>
<script src="jquery/js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="jquery/js/jquery.jqGrid.min.js" type="text/javascript"></script>

<script type="text/javascript">

 $(document).ready(function(e) {

/*jqgrid*/
     var mydata = [{
    head_mean_volume: "50",
    head_std_dev: "2",
    head_cv: "3",
    offset_factor: "4",
    scaling_factor: "5"
}];

    $("#projectSpreadsheet").jqGrid({
    data: mydata,
    datatype: "local",
    colNames: ["Head Mean Volume Dispensed", "Head Standard Deviation", "Head %CV", "Whole Head Offset Factor", "Whole Head Scaling Factor"],
    colModel: [{
        name: 'head_mean_volume',
        index: 'head_mean_volume',
        editable: false,
    }, {
        name: 'head_std_dev',
        index: 'head_std_dev',
        editable: false,
    }, {
        name: 'head_cv',
        index: 'head_cv',
        editable: false,
    }, {
        name: 'offset_factor',
        index: 'offset_factor',
        editable: false,
    }, {
        name: 'scaling_factor',
        index: 'scaling_factor',
        editable: false,
    }],
    'cellEdit': false,
    'cellsubmit' : 'clientArray',
    editurl: 'clientArray'

}); /*jqGrid close */


/* createExcelFromGrid */

  $('#btnSun').click(function() {
    $.fn.myFunction("projectSpreadsheet");
  });
  $.fn.myFunction = 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();
}

}); /* function close */

</script>

</head>

<body>

<table id="projectSpreadsheet" class="fixed_headers" style="width:875px"></table>
                        <br><br>
 <button id="btnSun">Export Table data into Excel</button>               


</body>
</html>

最佳答案

用这个函数替换您的函数,并告诉我它是否适合您。

function(gridID,filename) {
    var html = $('#gview_' + gridID).html();
    var a = document.createElement('a');
    a.id = 'tempLink';
    a.href = 'data:application/vnd.ms-excel,' + html;
    a.download = filename + ".xls";
    document.body.appendChild(a);
    a.click(); // Downloads the excel document
    document.getElementById('tempLink').remove();
}

关于php - 无法将 jqgrid 表导出为 excel/pdf。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34800238/

相关文章:

jquery - 如何在响应式设计的媒体查询中显示所有 ul li 列表?

jqgrid - JQGrid列自动宽度

php - 如何从 ajax 返回调用 JavaScript 函数

javascript - 基于 html 标题值的 css 中的图像 url

javascript - 使用 AMD 和 Moodle

jquery - jqGrid tableToGrid - 如果表中没有找到行则显示消息

javascript - jQgrid - 在网格最后移动第一列(td)后出现问题

php - 使用 PHP 和 HTML 将文本字段插入数据库

php - MySQL UNION ALL Issue 得到正确的结果

javascript - Stripe : HTML Checkout iOS Cordova wont open