2016-03-22 20 views
0

Ich versuche, eine Zahl als Text in datatables.js beim Herunterladen Excel-Datei zu konvertieren. Wenn ich normalerweise ein einzelnes Zitat ' manuell in die Excel-Datei vor einer Nummer, die es funktioniert .. aber wenn ich das programmatisch tun es nicht .. wo mache ich mich geirrt? Das Folgende sind meine Spalten Deklaration;Wie kann ich eine Zahl in Excel konvertieren "datatables.js" herunterladen

"columns": [ 
{ "data": "ID", "visible": false, "searchable": false }, 
{ 
    "data": "ProductCode", "title": 'Product Code', "visible": true, responsivePriority: 1, render: function (data, type, row) { 

     if (type === 'export') { 

      return "'" + data; 
     } 
     else { 

      return data; 
     } 
    } 
}, 
... 
] 

Dies ist meine Schaltfläche Deklaration;

// Initialize Download Button 
new $.fn.dataTable.Buttons(table, { 

    buttons: [{ 
     extend: 'excel', text: 'Download Excel', className: 'btn-sm btn-success downloadButton', exportOptions: { 
      columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], 
      orthogonal: 'export' 
     } 
    }] 
}); 

Es zeigt, wie diese '12345 in der heruntergeladenen Excel-Datei, aber wenn ich drücken F2 nur (Edit) und drücken Sie die Eingabetaste Excel es in den Text konvertiert :(. Jede Hilfe wird sehr spürbar sein.

Antwort

0

Have Sie versuchen, das Apostroph zu entfernen?

einfach diesen return "" + data; tun. Es sollte funktionieren.

+0

nicht :( – Mahib

+0

Dies ist die Art und Weise ist ein zu konvertieren Nummer zu Text in Javascript. Vielleicht hat das Problem, das Sie erwähnen, damit zu tun, dass Excel den Datentyp automatisch erkennt. –

+0

Ich denke ja oder kann die Javascript-Bibliothek sein, die ich benutze, muss ich das debuggen .. Es ist nicht über Excel Ich denke, Ursache, wenn ich das manuell es in den Text konvertiert .. – Mahib

0

ich dieses Problem gelöst, indem Code unten in addRow Funktion in datatable.js Datei Kommentierung aus.

// Zahlen erkennen - sie mit führenden Nullen nicht Zahlen entsprechen oder einem negativen

// anywhere but the start 
       //if (typeof row[i] === 'number' || (
       //  row[i].match && 
       //  $.trim(row[i]).match(/^-?\d+(\.\d+)?$/) && 
       //  ! $.trim(row[i]).match(/^0\d+/)) 
       //) { 
       // cell = _createNode(rels, 'c', { 
       //  attr: { 
       //   t: 'n', 
       //   r: cellId 
       //  }, 
       //  children: [ 
       //   _createNode(rels, 'v', { text: row[i] }) 
       //  ] 
       // }); 
       //} 
       //else { 

unterhalb der Funktion ist

var addRow = function (row) { 
      currentRow = rowPos+1; 
      rowNode = _createNode(rels, "row", { attr: {r:currentRow} }); 

      for (var i=0, ien=row.length ; i<ien ; i++) { 
       // Concat both the Cell Columns as a letter and the Row of the cell. 
       var cellId = createCellPos(i) + '' + currentRow; 
       var cell; 

       if (row[i] === null || row[i] === undefined) { 
        row[i] = ''; 
       } 

       // Detect numbers - don't match numbers with leading zeros or a negative 
       // anywhere but the start 
       //if (typeof row[i] === 'number' || (
       //  row[i].match && 
       //  $.trim(row[i]).match(/^-?\d+(\.\d+)?$/) && 
       //  ! $.trim(row[i]).match(/^0\d+/)) 
       //) { 
       // cell = _createNode(rels, 'c', { 
       //  attr: { 
       //   t: 'n', 
       //   r: cellId 
       //  }, 
       //  children: [ 
       //   _createNode(rels, 'v', { text: row[i] }) 
       //  ] 
       // }); 
       //} 
       //else { 
        // Replace non standard characters for text output 
        var text = ! row[i].replace ? 
         row[i] : 
         row[i].replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, ''); 

        cell = _createNode(rels, 'c', { 
         attr: { 
          t: 'inlineStr', 
          r: cellId 
         }, 
         children:{ 
          row: _createNode(rels, 'is', { 
           children: { 
            row: _createNode(rels, 't', { 
             text: text 
            }) 
           } 
          }) 
         } 
        }); 
       //} 

       rowNode.appendChild(cell); 
      } 
      relsGet.appendChild(rowNode); 
      rowPos++; 
     }; 
Verwandte Themen