Example export to Excel

Hello support,



I think you should post an example in the documentation or download link to export data from grid to excel.

The questions are many.



Best Regards,

FelipeTv.

You can export dhtmlxGrid to the CSV format. Please find example here dhtmlx.com/docs/products/dht … d_csv.html


Thanks for the reply but I think you misunderstood me.
I need a script or command that exports the grid to excel.

Example:



mygrid.export(‘c:\mydiretory\grid.xls’)

Best Regards,
FelipeTv.


dhtmlxGrid is fully client side component. Conversion grid to excell is really
server side task. Grid can serialize itself as XML or CSV - which can be used
to further transformation on server side.


Truth
But this script:

<%
Response.ContentType = "application / vnd.ms-excel"
Response.AddHeader "content-disposition", "attachment; filename = ADM.xls"
%>





col1
col2
col3

row1-1
row1-2
row1-3

row2-1
row2-2
row2-3

 
Creates an excel on the client side.
How could unite the two forms?
Best Regards,
FelipeTv.

dhtmlxGrid hasn’t appropriate methods to convert itself to the .xls format. It can only be serialized to the csv format. If such requirement is critical in your case you can contact sales@dhtmlx.com and request for component customization.


Solution in 3 steps:



Step 1:
Open the file
dhtmlxGrid\codebase\ext\dhtmlxgrid_nxml.js



Paste this code:
//TOEXCEL
dhtmlXGridObject.prototype.exportToExcel = function(before,after)
 {
   var html=“TD {font-family:Arial;text-align:center};”;
   var st_hr=null;
   if (this._fake)
   {
    st_hr=this._hrrar;
    for (var i=0;i<this._fake._cCount;i++)this._hrrar[i]=null
   };
  html+="";
  if (!this.parentGrid)html+=(before||"");
  html += ‘

’;
  var row_length = Math.max(this.rowsBuffer.length,this.rowsCol.length);
  var col_length = this._cCount;
  var width = this._printWidth();
  html += ‘’;
  for (var i=0;i<col_length;i++)
   {
    if (this._hrrar && this._hrrar[i])continue;
    var hcell=this.hdr.rows[1].cells[this.hdr.rows[1]._childIndexes?this.hdr.rows[1]._childIndexes[parseInt(i)]:i];
    var colspan=(hcell.colSpan||1);
    var rowspan=(hcell.rowSpan||1);
    for (var j=1;j<colspan;j++)width[i]+=width[j];
    html += ‘’;
    i+=colspan-1
   };
  html += ‘’;
  for (var i=2;i<this.hdr.rows.length;i++)
   {
    if (_isIE)
     {
      html+="";
      var cells=this.hdr.rows[i].childNodes;
      for (var j=0;j < cells.length;j++)
      if (!this._hrrar || !this._hrrar[cells[j]._cellIndex]){html+=cells[j].outerHTML};
      html+=""
     }
    else
     html+=""+(this._fake?this._fake.hdr.rows[i].innerHTML:"")+this.hdr.rows[i].innerHTML+""
   };
  for (var i=0;i<row_length;i++)
   {
    html += ‘’;if (this.rowsCol[i] && this.rowsCol[i]._cntr){html+=this.rowsCol[i].innerHTML.replace(/<img[^>]*>/gi,"")+’’;
    continue
   };
  if (this.rowsCol[i] && this.rowsCol[i].style.display==“none”)continue;
  var row_id
  if (this.rowsCol[i])row_id=this.rowsCol[i].idd;
  else if (this.rowsBuffer[i])row_id=this.rowsBuffer[i].idd;
  else continue;
  for (var j=0;j<col_length;j++)
   {
    if (this._hrrar && this._hrrar[j])continue;
    if(this.rowsAr[row_id] && this.rowsAr[row_id].tagName==“TR”){var c=this.cells(row_id, j);
    if (c._setState)var value="";
    else if (c.getContent)value = c.getContent();
    else if (c.getImage || c.combo)var value=c.cell.innerHTML;
    else
    var value = c.getValue()
   }
  else
  var value=this._get_cell_value(this.rowsBuffer[i],j);
  var color = this.columnColor[j]?‘background-color:’+this.columnColor[j]+’;’:’’;
  var align = this.cellAlign[j]?‘text-align:’+this.cellAlign[j]+’;’:’’;
  var cspan = c.getAttribute(“colspan”);
  html += ‘<td style="padding-left:2px;padding-right:2px;’+color+align+’" ‘+(cspan?‘colSpan="’+cspan+’"’:’’)+’>’+(value===""?" “:value)+’’;
  if (cspan)j+=cspan-1};
  html += ‘’;
  if (this.rowsCol[i] && this.rowsCol[i]._expanded)
   {
    var sub=this.cells4(this.rowsCol[i]._expanded.ctrl);
    if (sub.getSubGrid)html += ‘’;
    else
    html += ‘’
   }
 };
 if (this.ftr)for (var i=1;i<this.ftr.childNodes[0].rows.length;i++)html+=”"+((this._fake && _isFF)?this._fake.ftr.childNodes[0].rows[i].innerHTML:"")+this.ftr.childNodes[0].rows[i].innerHTML+"";
 html += ‘
’+this.getHeaderCol(i)+’
’+sub.getSubGrid().exportToExcel()+’
’+this.rowsCol[i]._expanded.innerHTML+’
’;
 if (this.parentGrid)return html;
 html+=(after||"");



//Here is the secret!!!
 var writeDataXLS = document.getElementById(“toFileXLS”);
 writeDataXLS.innerHTML = “”;



 var varXLS = document.getElementById(“myGridToXLS”);
 varXLS.value = html;
 document.formToXLS.submit();
//End the secret



 if (this._fake){this._hrrar=st_hr}};
 dhtmlXGridObject.prototype._printWidth=function()
  {
   var width = [];
   var total_width = 0;
   for (var i=0;i<this._cCount;i++)
    {
     var w = this.getColWidth(i);
     width.push(w);
     total_width += w
    };
   var percent_width = [];
   var total_percent_width = 0;
   for (var i=0;i<width.length;i++)
    {
     var p = Math.floor((width[i]/total_width)*100);
     total_percent_width += p;
     percent_width.push§
    };
   percent_width[percent_width.length-1] += 100-total_percent_width;
   return percent_width
  };
//FIM TOEXCEL VIEW




Step 2:
Create file report.asp




Paste tihs code:



<%
 Response.ContentType=“application/vnd.ms-excel”
 Response.AddHeader “content-disposition”, “attachment; filename=relatorio.xls”
 response.Write(request.Form(“dataToXLS”))
%>



Setp 3:



mygrid.asp






Export to Excel









<script  src="…/…/codebase/dhtmlxcommon.js">
<script  src="…/…/codebase/dhtmlxgrid.js">
<script  src="…/…/codebase/ext/dhtmlxgrid_nxml.js">
<script  src="…/…/codebase/dhtmlxgridcell.js">


Printable view