JQGrid: экспорт сетки в PDF

Есть ли способ экспортировать JQGrid данные в Excel / PDF. Я использую SQL Server 2008 R2 как базу данных и службу WCF для HTTP-запроса / ответа. Клиент написан с использованием JavaScript, а вызовы AJAX выполняются для взаимодействия с базой данных SQL через службу WCF.

Будет ли работать функция excelExport в jqgrid?

Вот код для сбора и хранения данных сетки:


enter code here
function ExportExcel() {
    var mya=new Array();
    mya = $("#PrjBudgetGrid").getDataIDs();  // Get All IDs
    var data = $("#PrjBudgetGrid").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 = $("#PrjBudgetGrid").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
}

person Nitin Chhabra    schedule 15.01.2013    source источник


Ответы (1)


Вы можете использовать код из ответа или даже лучше из еще один более свежий ответ. Часть кода, которая экспортирует данные в Excel, вы можете легко изменить на код WCF. См. здесь пример использования Stream в качестве выходных данных метода WCF.

person Oleg    schedule 15.01.2013
comment
Спасибо, Олег, попробую твое решение и вернусь обратно. - person Nitin Chhabra; 16.01.2013
comment
Олег, как я могу передать данные JQGrid в службу WCF с помощью вызова AJAX, чтобы экспортировать их в Excel? - person Nitin Chhabra; 19.01.2013
comment
@ user1724302: Какова ваша текущая проблема: вызов службы WCF или возврат двоичных данных Excel в виде потока из службы WCF? - person Oleg; 19.01.2013
comment
Проблема заключается в вызове службы WCF с данными сетки в формате JSON. - person Nitin Chhabra; 19.01.2013
comment
@ user1724302: Извините, но я так чувствую код, который вы разместили. Вы получаете данные, которые находятся в сетке с сервера. Почему вам нужно отправлять какие-либо данные обратно на сервер, а не получать их из кода сервера непосредственно из базы данных? - person Oleg; 19.01.2013
comment
@ user1724302: Вам нужно просто присвоить новое значение window.location. Я постоянно использую экспорт в Excel из WCF или MVC. В основном код на стороне клиента просто добавляет основание, которое имеет что-то вроде onClickButton: function () {window.location = '/MyExportToExcel/ExportSwPV';}. В редких случаях я добавляю дополнительные параметры в конце URL-адреса. - person Oleg; 19.01.2013
comment
Ты прав, Олег, мне не надо отправлять из Grid обратно в сервис WCF. Сервис может брать те же данные из базы данных. Итак, все, что мне нужно сделать, это создать поток данных, который я хочу видеть в Excel при экспорте. Я прав? - person Nitin Chhabra; 19.01.2013
comment
@ user1724302: Да. Если вы используете {window.location = '/MyExportToExcel/MyExport';, а URL-адрес '/MyExportToExcel/MyExport'; возвращает двоичный поток и устанавливает некоторые дополнительные заголовки HTTP (см. Мой ответ), тогда веб-браузер автоматически откроет Steam с помощью Excel.exe. Таким образом, пользователь нажимает на кнопку, и данные Excel будут открыты на стороне клиента. - person Oleg; 19.01.2013
comment
Я не использую MVC, поэтому мне нужно сделать AJAX-вызов метода экспорта Excel в службе WCF и использовать API-интерфейсы Open XML SDK для экспорта данных. Я прав? - person Nitin Chhabra; 19.01.2013
comment
Олег, а можно показать ячейку в денежном формате, как это сделать? - person Nitin Chhabra; 23.01.2013
comment
@ user1724302: вам нужно просто добавить formatter: "currency" в определение столбца. См. документацию - person Oleg; 23.01.2013
comment
Олег, я спрашиваю, когда я экспортирую данные в Excel, как мне установить формат ячейки как валюту, в вашем примере ExportToExcel это единственная строка, целое число и дата как типы данных. Мне также нужно общее форматирование ячеек и валютных ячеек для Excel. Есть ли у вас какие-либо идеи? - person Nitin Chhabra; 23.01.2013
comment
@ user1724302: я показал в демонстрации из ответа, как создать собственный формат, и включил примеры форматирования Integer, Date, Text, Я показал, как выбрать собственный шрифт, фон, выравнивание и поворот. Не могу реализовать ни по одному запросу еще одну функцию. Вы должны создать новый CellFormats, который вам нужен, и использовать его. Я не могу делать всю твою работу. Прости! - person Oleg; 24.01.2013
comment
Ничего страшного Олег, я сделаю это. Но как добавить комментарии к ячейкам excel. Вы что-нибудь об этом знаете? - person Nitin Chhabra; 24.01.2013
comment
@ user1724302: Это не так просто: см. здесь. Вы можете использовать инструмент повышения производительности Open XML. - person Oleg; 24.01.2013
comment
Спасибо, Олег за ответ, я все равно должен это сделать. Спасибо за наводку. - person Nitin Chhabra; 24.01.2013