Mam stronę internetową, która ma 3 tabele i chciałbym wyeksportować wszystkie 3 z nich do tego samego pliku excel. Chciałbym, aby każdy stół znajdował się we własnym arkuszu, ale posiadanie wszystkich na tym samym arkuszu również jest w porządku. Po przejściu przez google wszystko, co widziałem, to eksportowanie jednej tabeli do jednego arkusza programu Excel.Jak eksportować wiele tabel html do programu Excel?
Odpowiedz
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));
}
})();
I 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>
UWAGA: to nie działa na IE („dane zbyt mały” błąd) oraz Firefox obie tabele są umieszczane na tym samym arkuszu.
Credit również ten wątek - HTML Table to Excel Javascript
Znalazłem, że nie działa dobrze, gdy używa się wielu arkuszy. W moim przypadku http://stackoverflow.com/questions/29698796/how-to-convert-html-table-to-excel-with-multiple- sheheet to działało dobrze. Należy zwrócić uwagę na znak "/" w nazwie arkusza. –
Mam ten błąd z tym kodem Przedrostek "x" dla elementu "x: ExcelWorksheet" nie jest związany. –
// funkcja 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)))
}
// funkcja 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;
}
jest w kanciastym, ale to nie powinno mieć znaczenia. – Ehud
Ta odpowiedź wskazała mi właściwy kierunek. Obsługuje umieszczanie danych na różnych arkuszach. Wydaje SpreadsheetML, a nie HTML.Więcej informacji w tej odpowiedzi tutaj: http://stackoverflow.com/a/150368/373981 –
@ Ehud możesz dać jsfiddle na to? łatwo byłoby zrozumieć, w jakim formacie przekazywane są "zbiory danych" –
Here jest lepszym rozwiązaniem, które obsługuje tabelę eksportującego w najnowszym programie Excel format, tj. xlsx . Zatwierdzone rozwiązanie zakończy się niepowodzeniem, jeśli całkowita liczba eksportowanych wierszy przekroczy 3407 w Chrome.
Przykładem z linku powyżej: 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. Eksportować do programu Excel z repeatera?
- 2. Eksportowanie tabel HTML do programu Excel (.xls) w oddzielnym arkuszu
- 3. Jak eksportować dane siatki extjs do programu Excel?
- 4. Eksportuj tabelę HTML do programu Excel za pomocą programu ASP.NET
- 5. Makro eksportować tabele MS Word na arkuszach Excel
- 6. Pobierz arkusz programu Excel do tabel tymczasowych za pomocą skryptu
- 7. przekonwertować arkusz programu Excel do skryptu sql
- 8. Jak eksportować stronę html do formatu pdf?
- 9. Nodejs: Jak eksportować wiele obiektów?
- 10. Eksportuj DataTable do programu Excel z EPPlus
- 11. Eksport do programu Excel w Asp.net MVC
- 12. Jak eksportować film z programu Powerpoint 2010?
- 13. Export HTML do programu Excel, ale wybrać nazwę dla pliku
- 14. Jak eksportować kryteriów excel/csv w jQuery DataTable
- 15. CSV do programu Excel konwersji
- 16. Jak programowo importować dane programu Excel do tabeli programu Access?
- 17. Jak eksportować dane z modelu do pliku Excela na rubyonrails
- 18. Jak eksportować JasperReport do pliku Excela z wieloma arkuszami roboczymi?
- 19. Czy można wykonywać wiele kolorowych tekstów w komórce programu Excel?
- 20. prosty sposób eksportować DataGridView do Excela
- 21. Jak odnieść się do tabel w programie Excel vba?
- 22. Arkusze programu Excel + C#
- 23. Scal: modyfikuj wiele tabel
- 24. Hiperłącze programu Excel do konkretnej komórki
- 25. Makro Microsoft Excel do uruchomienia programu Java
- 26. pisanie do programu Excel w języku Java
- 27. Import plików CSV do programu Excel
- 28. Eksportowanie wyników zapytania Mysql do programu Excel?
- 29. przenoszenie danych z programu Excel do programu SQL Server tabeli
- 30. JavaScript - eksport danych tabeli HTML do Excela
A jak chcesz to zrobić? W jakim języku? W jakim środowisku? Ile wysiłku włożyłeś w to do tej pory? Masz dość znaczków i przedstawiciela, aby poznać zasady. –
Jakiego języka programowania używasz? Tylko HTML i JavaScript? –
@ alex.pulver Używam stron sieci Web ASP.NET. Ale zamierzam to zrobić tylko w HTML i JavaScript. – dotnetN00b