2013-09-19 2 views
-1

Мне нужно экспортировать данные jqgrid с валютным форматом, например $ 4,355.Экспорт данных jqgrid в excel/pdf с валютным форматом

Мой колмодель внизу. Я звоню как функция exportGrid('griddtable',[1,2,3,4,5])

   name : 'totalSpend', 
       index : 'totalSpend', 
       align : 'right', 
       sorttype : 'number', 
       formatter : 'currency', 
       formatoptions : { 
        prefix : '$', 
        thousandsSeparator : ',' 
       } 

function exportGrid(table, filtered) { 

var mya = new Array(); 
mya = $("#" + table).getDataIDs(); // Get All IDs 
var data = $("#" + table).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 (var k = 0; k < colNames.length; k++) { 
    if (filtered.indexOf(k) >= 0) { 
      html = html + colNames[k] + "\t"; 
    } 
} 
html = html + "\n"; // Output header with end of line 
for (i = 0; i < mya.length; i++) { 
    data = $("#" + table).getRowData(mya[i]); // get each row 
    for (var j = 0; j < colNames.length; j++) { 
     if (filtered.indexOf(j) >= 0) { 
      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 
var form = "<form name='csvexportform' action='exportData.do?method=excelExport' method='post'>"; 
form = form + "<input type='hidden' name='fileName' value='" + fileName 
     + "'>"; 
form = form + "<input type='hidden' name='csvBuffer' value='" + html + "'>"; 
form = form + "</form><script>document.csvexportform.submit();</sc" 
     + "ript>"; 
OpenWindow = window.open('', ''); 
OpenWindow.document.write(form); 
OpenWindow.document.close(); 

    } 

Любые предложения? Есть ли возможность получить данные строки с отформатированным значением?

+0

Где в начале данных, которые вам нужно экспортировать? Сетка обычно заполняется данными из бэкэнд (например, с данными из базы данных). Итак, зачем нужно получать данные со страницы HTML и отправлять их на бэкэнд, если на * сервере * ** есть ** данные уже? Разве это не является родным для отправки только запроса запроса на сервер для генерации XLSX из данных, уже существующих на сервере. [Ответ] (http://stackoverflow.com/a/9349688/315935) и [этот] (http://stackoverflow.com/a/13957161/315935) приводят примеры такой реализации. – Oleg

+0

@ Олега благодарит за ответ. У меня также был выбор столбцов для фильтрации столбцов. Можно ли получить отфильтрованные столбцы и строки, доступные в настоящее время в сетке? –

+0

Вы можете отправить серверу список имен не скрытых столбцов в том порядке, в котором его отображает jqGrid. Вы также можете отправить столбец сортировки и порядок сортировки. Все остальные могут делать сервер. – Oleg

ответ

0

Наконец-то я понял. Я использовал некоторые трюки, но он отлично работает. Я определил все денежные значения, используя их десятичные знаки и отформатировав это значение. Следовательно, я получил символ $ на всех значениях monsy. Я знал, что это не оптимальное решение. Но может быть полезно кому-то.

var RE = new RegExp(/^\d*\.\d\d$/);   //Regular expression to find all 2 decimal values 
for (i = 0; i < mya.length; i++) { 
    data = $("#" + table).getRowData(mya[i]); // get each row 
    for (var j = 0; j < colNames.length; j++) { 
     if (filtered.indexOf(j) >= 0) { 
      if (RE.test(data[colNames[j]])) {  //If matches add $symbol 
       html = html + "$" + data[colNames[j]] + "\t"; // output for money each Row as 
       // tab delimited 
      } else { 
       html = html + data[colNames[j]] + "\t"; // output each Row as 
       // tab delimited 
      } 
     } 
    } 
    html = html + "\n"; // output each row with end of line 
} 
Смежные вопросы