Ich habe eine Webseite, die 3 Tabellen hat und ich möchte alle 3 von ihnen in dieselbe Excel-Datei exportieren. Ich hätte gerne jeden Tisch in einem eigenen Blatt, aber alle auf dem gleichen Blatt zu haben, ist auch in Ordnung. Nach einigem googeln, habe ich nur eine Tabelle in ein Excel-Blatt exportiert.Wie exportiere ich mehrere HTML-Tabellen zu Excel?
Antwort
var tablesToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,'
, template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets>'
, templateend = '</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head>'
, body = '<body>'
, tablevar = '<table>{table'
, tablevarend = '}</table>'
, bodyend = '</body></html>'
, worksheet = '<x:ExcelWorksheet><x:Name>'
, worksheetend = '</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>'
, worksheetvar = '{worksheet'
, worksheetvarend = '}'
, base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
, format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }
, wstemplate = ''
, tabletemplate = '';
return function (table, name, filename) {
var tables = table;
for (var i = 0; i < tables.length; ++i) {
wstemplate += worksheet + worksheetvar + i + worksheetvarend + worksheetend;
tabletemplate += tablevar + i + tablevarend;
}
var allTemplate = template + wstemplate + templateend;
var allWorksheet = body + tabletemplate + bodyend;
var allOfIt = allTemplate + allWorksheet;
var ctx = {};
for (var j = 0; j < tables.length; ++j) {
ctx['worksheet' + j] = name[j];
}
for (var k = 0; k < tables.length; ++k) {
var exceltable;
if (!tables[k].nodeType) exceltable = document.getElementById(tables[k]);
ctx['table' + k] = exceltable.innerHTML;
}
//document.getElementById("dlink").href = uri + base64(format(template, ctx));
//document.getElementById("dlink").download = filename;
//document.getElementById("dlink").click();
window.location.href = uri + base64(format(allOfIt, ctx));
}
})();
Und der HTML
<html>
<head>
<title>JS to Excel</title>
</head>
<body>
<table id="1">
<tr><td>Hi</td></tr>
<tr><td>Hey</td></tr>
<tr><td>Hello</td></tr>
</table>
<table id="2">
<tr><td>Night</td></tr>
<tr><td>Evening</td></tr>
<tr><td>Nite</td></tr>
</table>
<a id="dlink" style="display:none;"></a>
<input type="button" onclick="tablesToExcel(['1', '2'], ['first', 'second'], 'myfile.xls')" value="Export to Excel">
<script src="~/Views/JS/JSExcel.js" type="text/javascript"></script>
</body>
</html>
Hinweis: das funktioniert nicht auf IE (‚Daten zu klein‘ Fehler) und auf Firefox beide Tabellen sind auf dem gleichen Blatt setzen.
Kredit auch auf diesen Thread - HTML Table to Excel Javascript
Ich fand das nicht gut, wenn Sie mehrere Blätter verwenden. In meinem Fall, http://stackoverflow.com/questions/29698796/how-to-convert-html-table-to-excel-with-multiple-sheet das hat gut funktioniert. Eine Sache sollte vorsichtig sein ist '/' Zeichen im Blattnamen. –
Ich habe diesen Fehler mit diesem Code Das Präfix "x" für Element "x: ExcelWorksheet" ist nicht gebunden. –
// Funktion 1
$scope.exportXlsSheets = function (datasets) {
var xlsString = '<?xml version="1.0"?>\
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">';
for(var key in dict){
var arr_of_entities= dict[key].arr;
xlsString += $scope.getSheet(arr_of_entities);
}
xlsString += '</ss:Workbook>';
var a = document.createElement('a');
a.href = 'data:application/vnd.ms-excel;base64,' + $scope.base64(xlsString);
a.target = '_blank';
a.download = 'test1.xls';
document.body.appendChild(a);
a.click();
}
$scope.base64 = function (s) {
return window.btoa(unescape(encodeURIComponent(s)))
}
// Funktion 2
$scope.getSheet = function (sheetName, entities) {
var res = '<ss:Worksheet ss:Name="'+sheetName+"></ss:Worksheet>\
<ss:Table>';
var row = '<ss:Row>';
for (i = 0; i < entities.length; i++) {
var entity = entities[i];
row += '<ss:Cell>\
<ss:Data ss:Type="String">'+entity.value +'</ss:Data>\
</ss:Cell>';
}
row += '</ss:Row>';
res += row;
return res;
}
ist es in eckigen, aber es sollte nicht wichtig sein. – Ehud
Diese Antwort wies mich in die richtige Richtung. Es unterstützt das Einfügen der Daten in verschiedene Blätter. Es gibt SpreadsheetML nicht HTML aus.Mehr Infos in dieser Antwort hier: http://stackoverflow.com/a/150368/373981 –
@Ehud können Sie bitte die jsfiddle dafür geben? Es wäre leicht zu verstehen, in welchem Format 'Datasets' übergeben werden –
Here ist eine bessere Lösung, die in der aktuellen Excel-Tabelle exportieren unterstützt Format dh xlsx . Die akzeptierte Lösung schlägt fehl, wenn die Gesamtzahl der zu exportierenden Zeilen in Chrome die Marke von 3407 überschreitet.
Ein Beispiel aus den obigen Link: http://jsfiddle.net/6ckj281f/
html
<button onclick="saveFile()">Save XLSX file</button>
Javascript
window.saveFile = function saveFile() {
var data1 = [{a:1,b:10},{a:2,b:20}];
var data2 = [{a:100,b:10},{a:200,b:20}];
var opts = [{sheetid:'One',header:true},{sheetid:'Two',header:false}];
var res = alasql('SELECT INTO XLSX("restest344b.xlsx",?) FROM ?',
[opts,[data1,data2]]);
}
- 1. Wie exportiere ich eine Rasteransicht in Excel?
- 2. Wie exportiere ich GridView nach Excel?
- 3. Wie exportiere ich Excel in hierarchischen Kendo Grid MVC
- 4. Delphi - wie exportiere ich einen Rave-Bericht nach Excel
- 5. Wie exportiere ich ein chart.js Diagramm?
- 6. CoffeeScript und NodeJS: Wie exportiere ich mehrere Klassen?
- 7. Wie exportiere ich Bilder aus Gridview?
- 8. Wie exportiere ich HTML-Tabelle mit PHPExcel?
- 9. Wie exportiere ich Excel 2016 Daten in eine andere Tabelle mit VBA?
- 10. Wie exportiere ich eine Datenbank mit Adminer?
- 11. Wie exportiere ich Daten als m3u8 Datei?
- 12. Wie importiere/exportiere ich Datenbank von PouchDB
- 13. Doctrine2 Exportiere Einheit zu Array
- 14. Wie exportiere ich benannte Abfragen in einer Hibernate Annotations App?
- 15. Wie exportiere ich von MySQL in eine Excel-Datei auf meiner PHP-Site?
- 16. Wie exportiere ich Trac-Tickets nach MS Excel einschließlich der Ticketbeschreibung, mit Formatierung?
- 17. Wie exportiere ich mehrzeiligen Text mit printdialog in Java?
- 18. Wie exportiere ich einen Reporting-Services-Bericht, um mit eingebetteten Berechnungen in den Excel-Spalten zu übertreffen?
- 19. Excel VBA Export Mehrere Blätter zu PDF
- 20. Warum erscheint eine weiße Schrift, wenn ich den Excel-Screenshot in VBA exportiere?
- 21. Mehrere Werte von Excel Zelle zu XML
- 22. Wie exportiere ich einen JIRA-Bericht in PDF?
- 23. Wie exportiere ich Templates aus einer DLL ohne explizite Angabe?
- 24. Wie exportiere ich ein Paketsymbol in einen Namespace in Perl?
- 25. Wie exportiere ich meine Ansichten aus einer Datenbank?
- 26. Wie exportiere und importiere ich Umgebungsvariablen in Windows?
- 27. Wie exportiere ich eine Tabelle zum Laden sortierter Faktoren?
- 28. Wie exportiere ich eine globale Variable von Require.js?
- 29. Excel zu .csv Problem
- 30. Wie exportiere ich in expressjs v4 Timestamps in die Logs?
Und wie möchten Sie dies tun? Mit welcher Sprache? In welcher Umgebung? Wie viel Mühe hast du bisher selbst investiert? Du hast genug Abzeichen und Wiederholungen, um die Regeln zu kennen. –
Welche Programmiersprache verwenden Sie? Nur HTML und Javascript? –
@ alex.pulver Ich verwende ASP.NET-Webseiten. Aber ich suche nur in HTML und Javascript. – dotnetN00b