如何将 HTML table 导出为 .xlsx 文件
How to export an HTML table as a .xlsx file
我对将 HTML table 导出为 xlsx 文件有疑问。我做了一些工作,现在我可以将其导出为 xls,但我需要将其导出为 xlsx.
这是我的 jsFiddle: https://jsfiddle.net/272406sv/1/
这是我的 HTML:
<table id="toExcel" class="uitable">
<thead>
<tr>
<th>Kampanya Basligi</th>
<th>Kampanya Türü</th>
<th>Kampanya Baslangiç</th>
<th>Kampanya Bitis</th>
<th style="text-align: center">Aksiyonlar</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="Item in campaign.campaignList">
<td> Item.CampaignTitle </td>
<td> Item.CampaignHotelType </td>
<td> Item.CampaignHotelCheckInDate) </td>
<td>Item.CampaignHotelCheckOutDate</td>
<td style="text-align: center">
<button> Some Action </button>
</td>
</tr>
</tbody>
</table>
<button onclick="exceller()">EXCEL</button>
这是我的 JavaScript 代码:
<script>
function exceller() {
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><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
base64 = function(s) {
return window.btoa(unescape(encodeURIComponent(s)))
},
format = function(s, c) {
return s.replace(/{(\w+)}/g, function(m, p) {
return c[p];
})
}
var toExcel = document.getElementById("toExcel").innerHTML;
var ctx = {
worksheet: name || '',
table: toExcel
};
var link = document.createElement("a");
link.download = "export.xls";
link.href = uri + base64(format(template, ctx))
link.click();
}
</script>
如果不返回服务器,您将无法将其导出为 XLSX。 XLSX 文件是压缩在一起的 XML 个文件的集合。这意味着您确实需要创建多个文件。这不可能用 JS,客户端来做。
相反,您应该创建一个函数来从您的 HTML table 检索数据并将其发送到您的服务器。服务器然后可以为您创建 XLSX 文件(有一堆可用的库!)并将其发送回客户端以供下载。
如果您希望拥有庞大的数据集,则服务器上的 XLSX 创建应作为异步过程完成,完成后通知用户(而不是让用户等待文件创建) .
让我们知道您在服务器上使用的是哪种语言,我们将能够向您推荐一些好的库。
看看tableExport.jquery.plugin or tableexport.jquery.plugin
代码示例
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML table Export</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="../lib/js-xlsx/xlsx.core.min.js"></script>
<script type="text/javascript" src="../lib/FileSaver/FileSaver.min.js"></script>
<script type="text/javascript" src="../lib/html2canvas/html2canvas.min.js"></script>
<script type="text/javascript" src="../tableExport.js"></script>
<script type="text/javaScript">
var sFileName = 'ngophi';
function ExportXLSX(){
$('#Event').tableExport({fileName: sFileName,
type: 'xlsx'
});
}
</script>
<style type="text/css">
body {
font-size: 12pt;
font-family: Calibri;
padding : 10px;
}
table {
border: 1px solid black;
}
th {
border: 1px solid black;
padding: 5px;
background-color:grey;
color: white;
}
td {
border: 1px solid black;
padding: 5px;
}
input {
font-size: 12pt;
font-family: Calibri;
}
</style>
</head>
<body>
<a href="#" onClick="ExportXLSX();">DownloadXLSX</a>
<br/>
<br/>
<div id="Event">
<table>
<tr>
<th>Column One</th>
<th>Column Two</th>
<th>Column Three</th>
</tr>
<tr>
<td>row1 Col1</td>
<td>row1 Col2</td>
<td>row1 Col3</td>
</tr>
<tr>
<td>row2 Col1</td>
<td>row2 Col2</td>
<td>row2 Col3</td>
</tr>
<tr>
<td>row3 Col1</td>
<td>row3 Col2</td>
<td><a href="http://www.jquery2dotnet.com/">http://www.jquery2dotnet.com/</a>
</td>
</tr>
</table>
</div>
</body>
</html>
一个 很棒的 客户端工具,用于将 html
表导出到 xlsx
、xls
、csv
或 txt
是 TableExport by clarketm (我)。它是一个简单、易于实现、功能齐全的库,具有大量可配置的属性和方法。
安装
$ npm install tableexport
用法
TableExport(document.getElementsByTagName("table"));
// OR using jQuery
$("table").tableExport();
Documentation
让您入门的示例应用程序
- TableExport + RequireJS
- TableExport + Flask
- TableExport + Webpack 1
- TableExport + Angular 4 + Webpack 2
Check out the compendious docs or just head over to TableExport
on Github for a full list of features.
您可以使用此插件将 table 导出到 .xlsx
我实际上已经找到了这个问题的解决方案,并在客户端使用 javascript 和来自这个 URL 的库:
https://unpkg.com/xlsx@0.15.1/dist/xlsx.full.min.js
这是一个代码示例。
function ExportSkillsToExcel(type, fn, dl)
{
var elt = document.getElementById('skillsTable');
var wb = XLSX.utils.table_to_book(elt, { sheet: "skills" });
return dl ?
XLSX.write(wb, { bookType: type, bookSST: true, type: 'base64' }):
XLSX.writeFile(wb, fn || ('Skills.' + (type || 'xlsx')));
}
我对将 HTML table 导出为 xlsx 文件有疑问。我做了一些工作,现在我可以将其导出为 xls,但我需要将其导出为 xlsx.
这是我的 jsFiddle: https://jsfiddle.net/272406sv/1/
这是我的 HTML:
<table id="toExcel" class="uitable">
<thead>
<tr>
<th>Kampanya Basligi</th>
<th>Kampanya Türü</th>
<th>Kampanya Baslangiç</th>
<th>Kampanya Bitis</th>
<th style="text-align: center">Aksiyonlar</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="Item in campaign.campaignList">
<td> Item.CampaignTitle </td>
<td> Item.CampaignHotelType </td>
<td> Item.CampaignHotelCheckInDate) </td>
<td>Item.CampaignHotelCheckOutDate</td>
<td style="text-align: center">
<button> Some Action </button>
</td>
</tr>
</tbody>
</table>
<button onclick="exceller()">EXCEL</button>
这是我的 JavaScript 代码:
<script>
function exceller() {
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><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
base64 = function(s) {
return window.btoa(unescape(encodeURIComponent(s)))
},
format = function(s, c) {
return s.replace(/{(\w+)}/g, function(m, p) {
return c[p];
})
}
var toExcel = document.getElementById("toExcel").innerHTML;
var ctx = {
worksheet: name || '',
table: toExcel
};
var link = document.createElement("a");
link.download = "export.xls";
link.href = uri + base64(format(template, ctx))
link.click();
}
</script>
如果不返回服务器,您将无法将其导出为 XLSX。 XLSX 文件是压缩在一起的 XML 个文件的集合。这意味着您确实需要创建多个文件。这不可能用 JS,客户端来做。
相反,您应该创建一个函数来从您的 HTML table 检索数据并将其发送到您的服务器。服务器然后可以为您创建 XLSX 文件(有一堆可用的库!)并将其发送回客户端以供下载。
如果您希望拥有庞大的数据集,则服务器上的 XLSX 创建应作为异步过程完成,完成后通知用户(而不是让用户等待文件创建) .
让我们知道您在服务器上使用的是哪种语言,我们将能够向您推荐一些好的库。
看看tableExport.jquery.plugin or tableexport.jquery.plugin
代码示例
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML table Export</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="../lib/js-xlsx/xlsx.core.min.js"></script>
<script type="text/javascript" src="../lib/FileSaver/FileSaver.min.js"></script>
<script type="text/javascript" src="../lib/html2canvas/html2canvas.min.js"></script>
<script type="text/javascript" src="../tableExport.js"></script>
<script type="text/javaScript">
var sFileName = 'ngophi';
function ExportXLSX(){
$('#Event').tableExport({fileName: sFileName,
type: 'xlsx'
});
}
</script>
<style type="text/css">
body {
font-size: 12pt;
font-family: Calibri;
padding : 10px;
}
table {
border: 1px solid black;
}
th {
border: 1px solid black;
padding: 5px;
background-color:grey;
color: white;
}
td {
border: 1px solid black;
padding: 5px;
}
input {
font-size: 12pt;
font-family: Calibri;
}
</style>
</head>
<body>
<a href="#" onClick="ExportXLSX();">DownloadXLSX</a>
<br/>
<br/>
<div id="Event">
<table>
<tr>
<th>Column One</th>
<th>Column Two</th>
<th>Column Three</th>
</tr>
<tr>
<td>row1 Col1</td>
<td>row1 Col2</td>
<td>row1 Col3</td>
</tr>
<tr>
<td>row2 Col1</td>
<td>row2 Col2</td>
<td>row2 Col3</td>
</tr>
<tr>
<td>row3 Col1</td>
<td>row3 Col2</td>
<td><a href="http://www.jquery2dotnet.com/">http://www.jquery2dotnet.com/</a>
</td>
</tr>
</table>
</div>
</body>
</html>
一个 很棒的 客户端工具,用于将 html
表导出到 xlsx
、xls
、csv
或 txt
是 TableExport by clarketm (我)。它是一个简单、易于实现、功能齐全的库,具有大量可配置的属性和方法。
安装
$ npm install tableexport
用法
TableExport(document.getElementsByTagName("table"));
// OR using jQuery
$("table").tableExport();
Documentation
让您入门的示例应用程序
- TableExport + RequireJS
- TableExport + Flask
- TableExport + Webpack 1
- TableExport + Angular 4 + Webpack 2
Check out the compendious docs or just head over to
TableExport
on Github for a full list of features.
您可以使用此插件将 table 导出到 .xlsx
我实际上已经找到了这个问题的解决方案,并在客户端使用 javascript 和来自这个 URL 的库:
https://unpkg.com/xlsx@0.15.1/dist/xlsx.full.min.js
这是一个代码示例。
function ExportSkillsToExcel(type, fn, dl)
{
var elt = document.getElementById('skillsTable');
var wb = XLSX.utils.table_to_book(elt, { sheet: "skills" });
return dl ?
XLSX.write(wb, { bookType: type, bookSST: true, type: 'base64' }):
XLSX.writeFile(wb, fn || ('Skills.' + (type || 'xlsx')));
}