Exporter pour exceller dans jquery ou jqGrid

J'ai un jqGrid où je reçois des données à la fois du serveur (java) au format JSON. Je veux que les données dans jqGrid soient exportées vers le format Excel.

Jusqu'à maintenant, j'ai vu cette page qui me donne une erreur dans IE 'o.url is null or not an object' grid.import.js

Aussi, j'ai vu cette démo où, sur le bout de l'outil du bouton d'exportation, il dit Export To Excel mais le fichier enregistré est en format xml.

Donc, je voudrais des suggestions qui peuvent soit transformer ma chaîne JSON en excel en utilisant javascript ou jquery plugin ou en utilisant la fonctionnalité intégrée de jqgrid.

My jqGrid

Entrez la description de l'image ici

Mon code jqGrid

 grid = jQuery("#list2"); grid.jqGrid({ datastr : comparePatchData, datatype: 'jsonstring', colNames:['Name',starheader, header1, header2], colModel:[ {name:'elementName',index:'elementName', width:90}, {name:'isPrasentinXml1',index:'isPrasentinXml1', width:100, align:'center', formatter: patchPresent}, {name:'isPrasentinXml2',index:'isPrasentinXml2', width:100, align:'center', formatter: patchPresent}, {name:'isPrasentinXml3',index:'isPrasentinXml3', width:100, align:'center', formatter: patchPresent} ], pager : '#gridpager2', rowNum:12, scrollOffset:0, height: 320, autowidth:true, viewrecords: true, gridview: true, loadonce:true, jsonReader: { repeatitems: false, page: function() { return 1; }, root: "response" }, subGrid: true, // define the icons in subgrid subGridOptions: { "plusicon" : "ui-icon-triangle-1-e", "minusicon" : "ui-icon-triangle-1-s", "openicon" : "ui-icon-arrowreturn-1-e", //expand all rows on load "expandOnLoad" : false }, subGridRowExpanded: function(subgrid_id, row_id) { //console.info(subgrid_id+", "+row_id); var subgrid_table_id, pager_id, iData = -1; subgrid_table_id = subgrid_id+"_t"; //pager_id = "p_"+subgrid_table_id; $("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' style='overflow-y:auto' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>"); $.each(comparePatchData.response,function(i,item){ if(item.id === row_id) { iData = i; return false; } }); if (iData == -1) { return; // no data for the subgrid } jQuery("#"+subgrid_table_id).jqGrid({ datastr : comparePatchData.response[iData], datatype: 'jsonstring', colNames: ['Name','Value1','Value2','Value3'], colModel: [ {name:"name",index:"name",width:90}, {name:"firstValue",index:"firstValue",width:100}, {name:"secondValue",index:"secondValue",width:100}, {name:"thirdValue",index:"thirdValue",width:100} ], rowNum:10, //pager: pager_id, sortname: 'name', sortorder: "asc", height: 'auto', autowidth:true, jsonReader: { repeatitems: false, //page: function() { return 1; }, root: "attribute" } }); jQuery("#"+subgrid_table_id).jqGrid('navGrid',{edit:false,add:false,del:false}); } }); grid.jqGrid('navGrid','#gridpager2',{add:false,edit:false,del:false}); grid.jqGrid('navButtonAdd','#gridpager2',{ caption:"Export to Excel", onClickButton : function () { jQuery("#list2").excelExport(); } }); 

Une partie de mon Json

 { "response": [ { "id": "1", "elementName": "libgtop2-devel-2.14.4-3.el5", "subCategory": "patch", "isEqual": false, "isPrasentinXml1": false, "isPrasentinXml2": false, "isPrasentinXml3": true, "attribute": [ { "name": "name", "thirdValue": "libgtop2-devel-2.14.4-3.el5" } ] }, { "id": "2", "elementName": "ifd-egate-0.05-15", "subCategory": "patch", "isEqual": false, "isPrasentinXml1": false, "isPrasentinXml2": false, "isPrasentinXml3": true, "attribute": [ { "name": "name", "thirdValue": "ifd-egate-0.05-15" } ] }, { "id": "3", "elementName": "libXScrnSaver-devel-1.1.0-3.1", "subCategory": "patch", "isEqual": false, "isPrasentinXml1": false, "isPrasentinXml2": false, "isPrasentinXml3": true, "attribute": [ { "name": "name", "thirdValue": "libXScrnSaver-devel-1.1.0-3.1" } ] }, { "id": "4", "elementName": "kde-i18n-Chinese-Big5-3.5.4-1", "subCategory": "patch", "isEqual": false, "isPrasentinXml1": true, "isPrasentinXml2": true, "isPrasentinXml3": true, "attribute": [ { "name": "name", "firstValue": "kde-i18n-Chinese-Big5-3.5.4-1", "secondValue": "kde-i18n-Chinese-Big5-3.5.4-1" } ] }, { "id": "5", "elementName": "cpio-2.6-20", "subCategory": "patch", "isEqual": false, "isPrasentinXml1": true, "isPrasentinXml2": true, "isPrasentinXml3": true, "attribute": [ { "name": "name", "firstValue": "cpio-2.6-20", "secondValue": "cpio-2.6-20", "thirdValue": "cpio-2.6-20" } ] }, { "id": "6", "elementName": "grep-2.5.1-54.2.el5", "subCategory": "patch", "isEqual": false, "isPrasentinXml1": true, "isPrasentinXml2": true, "isPrasentinXml3": true, "attribute": [ { "name": "name", "firstValue": "grep-2.5.1-54.2.el5", "secondValue": "grep-2.5.1-54.2.el5", "thirdValue": "grep-2.5.1-54.2.el5" } ] }, { "id": "7", "elementName": "avahi-compat-libdns_sd-0.6.16-1.el5", "subCategory": "patch", "isEqual": false, "isPrasentinXml1": true, "isPrasentinXml2": true, "isPrasentinXml3": true, "attribute": [ { "name": "name", "firstValue": "avahi-compat-libdns_sd-0.6.16-1.el5", "secondValue": "avahi-compat-libdns_sd-0.6.16-1.el5", "thirdValue": "avahi-compat-libdns_sd-0.6.16-1.el5" } ] }, { "id": "8", "elementName": "gpm-devel-1.20.1-74.1", "subCategory": "patch", "isEqual": false, "isPrasentinXml1": true, "isPrasentinXml2": true, "isPrasentinXml3": true, "attribute": [ { "name": "name", "firstValue": "gpm-devel-1.20.1-74.1", "secondValue": "gpm-devel-1.20.1-74.1", "thirdValue": "gpm-devel-1.20.1-74.1" } ] }, { "id": "9", "elementName": "esc-1.0.0-39.el5", "subCategory": "patch", "isEqual": false, "isPrasentinXml1": false, "isPrasentinXml2": false, "isPrasentinXml3": true, "attribute": [ { "name": "name", "thirdValue": "esc-1.0.0-39.el5" } ] }, { "id": "10", "elementName": "kde-i18n-Spanish-3.5.4-1", "subCategory": "patch", "isEqual": false, "isPrasentinXml1": true, "isPrasentinXml2": true, "isPrasentinXml3": true, "attribute": [ { "name": "name", "firstValue": "kde-i18n-Spanish-3.5.4-1", "secondValue": "kde-i18n-Spanish-3.5.4-1" } ] } ] } 

Vous ne devez pas exporter un fichier en utilisant le format Excel pour obtenir les données dans Excel. Il est généralement beaucoup plus facile d'exporter vers CSV . CSV fichiers CSV doivent être associés à Excel par défaut, donc il devrait avoir l'icône Excel par lui et tout. XML fonctionnerait de la même façon, je pense, mais le format CSV est beaucoup plus léger et fait le même travail dans ce cas. La conversion de JSON en CSV est simple:

 var response = JSON.parse(responseJSON).response; var csv = arrayToCSV(response); function arrayToCSV(arr) { var columnNames = []; var rows = []; for (var i=0, len=arr.length; i<len; i++) { // Each obj represents a row in the table var obj = arr[i]; // row will collect data from obj var row = []; for (var key in obj) { // Don't iterate through prototype stuff if (!obj.hasOwnProperty(key)) continue; // Collect the column names only once if (i === 0) columnNames.push(prepareValueForCSV(key)); // Collect the data row.push(prepareValueForCSV(obj[key])); } // Push each row to the main collection as csv string rows.push(row.join(',')); } // Put the columnNames at the beginning of all the rows rows.unshift(columnNames.join(',')); // Return the csv string return rows.join('\n'); } // This function allows us to have commas, line breaks, and double // quotes in our value without breaking CSV format. function prepareValueForCSV(val) { val = '' + val; // Escape quotes to avoid ending the value prematurely. val = val.replace(/"/g, '""'); return '"' + val + '"'; } 

J'ai un jqGrid où je reçois des données à la fois du serveur (java) au format JSON. Je veux que les données dans jqGrid soient exportées vers le format Excel.

Voici un article intéressant, qui vous montre comment exporter de jqGrid vers Excel …

http://www.codeproject.com/Articles/784342/Export-data-from-jqGrid-into-a-real-Excel-file

Je travaille avec MOSS 2007 pour exporter certaines listes (par exemple, 5 listes) pour exceller. Mon besoin est que j'ai besoin de plus d'une liste à exporter pour exceller. J'ai ajouté un CEWP dans ma page avec un bouton pour que d'un seul clic Je peux exporter plus d'une liste de données pour Excel.nw j'ai une erreur de temps d'exécution lorsque j'utilise jquery si ($ ('# WebPartWPQ3'). Est (': visible')) —> erreur d'objet prévue. Je ne trouve aucun identifiant div à suivre. De même, quelqu'un connaît la réponse, et cela va être sorti … ans, cette question est très appréciée … Mon code est le suivant.

  <Button type = "button"
 Onclick = exportToExcel ();> Cliquez sur
 </ Button> <br>
 <Script type = "text / javascript"> <br>
  Function exportToExcel () <br>
 {?
 Alerte ('Hi'); <br>
 //alert($("#WebPartWPQ3").attr(visvisibilité)); <br>
 Si ($ ('# WebPartWPQ3'). Est (': visible'))
 {?
  ContentType = "application / vnd.ms-excel"; <br>
 Var oExcel = new ActiveXObject ("Excel.Application"); <br>
 Var oBook = oExcel.Workbooks.Add; <br>
 Var oSheet = oBook.Worksheets (1); <br>

 Var VESSApplications = document.getElementById <br> ('ctl00_m_g_e3f5d791_5651_40ca_a03a_1c511c7f2b28_ctl00_ctl00_toolBarTbl'); <br>
   Alerte (document.getElementById ('WebPartWPQ3')); <br>
 Var OtherApplications = document.getElementById ('tblOtherApplications'); <br>
  // var MFGApplications = document.getElementById ('tblMFGApplications'); <br>
 Var row = 3; <br>
 Var col = 1; <br>

 // Définir les critères - commencer <br>
 OSheet.Cells (row, col) = "Business Function"; <br>
 OSheet.Cells (row, col + 1) = "VESS"; <br>
 OSheet.Cells (row, col + 2) = selectedVESSBusinessFunction; <br>
  // oSheet.Cells (row, col + 3) = "Manufacturing";
  // si (selectedMFGBusinessFunction! = "-Select-") <br>
  // oSheet.Cells (row, col + 4) = selectedMFGBusinessFunction; <br>
 Rang + = 2; <br>

 OSheet.Cells (row, col) = "Système d'exploitation";
 OSheet.Cells (row, col + 1) = "First Choice";
     Si (selectedOperatingSystemFirstChoice! = "-Select-") <br>

  OSheet.Cells (row, col + 2) = selectedOperatingSystemFirstChoice; <br>


 OSheet.Cells (row, col + 3) = "Second Choice";

 Si (selectedOperatingSystemSecondChoice! = "-Select-") <br>

 OSheet.Cells (row, col + 4) = selectedOperatingSystemSecondChoice; <br>

 Rang + = 2; <br>
 OSheet.Cells (row, col) = "Platform";
 OSheet.Cells (row, col + 1) = "First Choice";
 OSheet.Cells (row, col + 2) = selectedPlatformFirstChoice; <br>
 OSheet.Cells (row, col + 3) = "Second Choice";

 Si (selectedPlatformSecondChoice! = "-Select-") <br>

 OSheet.Cells (row, col + 4) = selectedPlatformSecondChoice; <br>
 Rang + = 2; <br>
 OSheet.Cells (row, col) = "Méthode de livraison";
 OSheet.Cells (row, col + 1) = "First Choice";
 OSheet.Cells (row, col + 2) = selectedDeliveryFirstChoice; <br>
 OSheet.Cells (row, col + 3) = "Second Choice";

  Si (selectedDeliverySecondChoice! = "-Select-") <br>

 OSheet.Cells (row, col + 4) = selectedDeliverySecondChoice; <br>
 Rang + = 2; <br>
 //alert(VESSApplications.rows.length); <br>
 Si (VESSApplications.rows.length> 0) <br>
 {?
  Pour (var y = 0; y <VESSApplications.rows.length; y ++) <br>
  {?
      Pour (var x = 0; x <VESSApplications .rows (y) .cells.length; x ++) <br>
      {?
    // oSheet.Cells (y + 1, x + 1) = VESSApplications .rows (y) .cells (x) .innerText; <br>
          OSheet.Cells (row, x + 1) = VESSApplications .rows (y) .cells (x) .innerText; <br>

      } <br>
              Ligne ++; <br>

  } <br>
  // oExcel.Visible = true; <br>
   // oExcel.UserControl = true; <br>
 } <br>

 Autrement <br>
 {?
 Alerte ("Il n'y a pas de VESS / autres applications à exporter!");
 } <br>
 Rang + = 2; <br>

 // Autres applications <br>

  / * For (var y = 0; y <OtherApplications.rows.length; y ++) <br>
  {?
      Pour (var x = 0; x <OtherApplications.rows (y) .cells.length; x ++) <br>
      {?
          OSheet.Cells (row, x + 1) = OtherApplications.rows (y) .cells (x) .innerText; <br>

      } <br>
              Ligne ++; <br>

  } <br>


    Rang + = 2; <br>


 // Applications MFG <br>

  Pour (var y = 0; y <MFGApplications.rows.length; y ++) <br>
  {?
      Pour (var x = 0; x <MFGApplications.rows (y) .cells.length; x ++) <br>
      {?
    // oSheet.Cells (y + 1, x + 1) = VESSApplications .rows (y) .cells (x) .innerText; <br>
          OSheet.Cells (row, x + 1) = MFGApplications.rows (y) .cells (x) .innerText; <br>

      } <br>
              Ligne ++; <br>

  } <br>

  * /  
 OSheet.columns.autofit; <br>


  OExcel.Visible = true; <br>
  OExcel.UserControl = true; <br>
 } <br>
 Autrement <br>
 {?
  Alerte ('Aucun VESS / Autres applications disponibles pour l'exportation');
 } <br>
 } <br>