экспорт jqgrid в исключение. добавить данные не только из таблицы - PullRequest
0 голосов
/ 03 июля 2018

В jqgrid есть совершенная функция: exportToExcel. Работает нормально. Интересно, есть ли варианты добавить в экспортируемый файл дополнительные столбцы или данные не из таблицы, а из моих пользовательских данных.

1 Ответ

0 голосов
/ 04 июля 2018

Прежде всего спасибо за вопрос, это очень полезно.

Чтобы выполнить запрошенную работу, вам необходимо сначала загрузить последнюю сборку Guriddo jqGrid с GitHub

Для выполнения этой работы вам необходимо использовать событие onBeforeExport в методе exportToExcel с кодом, подобным следующему:

$("#export").on("click", function(){
    $("#jqGrid").jqGrid("exportToExcel",{
        ...
        onBeforeExport : function ( xlsx, rowPos ) {
            // rowPos is the last inserted index with data in the excel sheet

            var sheet = xlsx.xl.worksheets['sheet1.xml'];

            // function to add a row
            function Addrow(index, data) {
                var row = sheet.createElement('row');
                row.setAttribute("r", index);
                for (i = 0; i < data.length; i++) {
                    var key = data[i].key;
                    var value = data[i].value;
                    var c  = sheet.createElement('c');

                    c.setAttribute("t", "inlineStr");
                    //c.setAttribute("s", "2"); This make it bold
                    c.setAttribute("r", key + index);

                    var is = sheet.createElement('is');
                    var t = sheet.createElement('t');
                    var text = sheet.createTextNode(value)

                    t.appendChild(text);                                      
                    is.appendChild(t);
                    c.appendChild(is);
                    row.appendChild(c);                                                                                                                         
                }

                return row;
            }
            var r1 = Addrow(++rowPos, [{ key: 'A', value: rowPos }, { key: 'B', value: 'Product1' }]);
            var r2 = Addrow(++rowPos, [{ key: 'A', value: rowPos }, { key: 'B', value: 'Product2' }]);                          
            var r3 = Addrow(++rowPos, [{ key: 'A', value: rowPos }, { key: 'B', value: 'Product3' }]);
            var r4 = Addrow(++rowPos, [{ key: 'A', value: rowPos }, { key: 'B', value: 'Product4' }]);
            // get sheetData
            var sheetData = sheet.getElementsByTagName('sheetData')[0];

            sheetData.insertBefore(r4,sheetData.childNodes[0]);
            sheetData.insertBefore(r3,sheetData.childNodes[0]);
            sheetData.insertBefore(r2,sheetData.childNodes[0]);
            sheetData.insertBefore(r1,sheetData.childNodes[0]);                 
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...