导出到 Excel - Chrome 和 Firefox 中的问题
Export to Excel - Issue in Chrome and Firefox
我有 table 并使用 JS 导出到 Excel。 <table>
标签有一些描述和class(<table class="someClassName" border="0" cellpadding="0" cellspacing="0">)
。
导出到Excel时,excel文件包含table的标签和值(<table> <tr> <td>value</td><td>value</td>...</tr>
),看起来一团糟!但是,如果我删除 <table>
中的所有描述和 class,当导出到 Excel 时,它看起来很好(没有 <table> <tr> <td>...
标签)。
一个问题是如何在不删除描述和 <table>
中的 class 的情况下使导出的 Excel 看起来很好?谢谢!
HTML
<div class="dvData">
<table class="header_detail" border="0" cellpadding="0" cellspacing="0">
<tr>
<th>Billing System</th>
<th>Market Code</th>
<th>Payment Amount</th>
</tr>
<tr>
<td>RED</td>
<td>222</td>
<td>3.00</td>
</tr>
<tr>
<td>BLUE</td>
<td>111</td>
<td>.00</td>
</tr>
<tr>
<td>GREEN</td>
<td>555</td>
<td>3.00</td>
</tr>
</table>
</div>
<br />
<input type="button" value="Export" class="toExcelButton" data-target="dvData" />
JS
$(document).ready(
function()
{
$(".toExcelButton").click(function(e) {
e.stopPropagation();
var table = $("." + $(this).data('target'));
window.open('data:application/vnd.ms-excel,' + $(table).html());
e.preventDefault();
});
}
);
您是否考虑过使用 excel.CSV 文件?
您可以将表项目移动到一个字符串中,项目之间用逗号分隔。希望这有帮助。
您可以使用jQuery的clone and removeAttr函数来解决这个问题。
var newTable = $('#exportme').clone(),
wrapper = $('<div>').append(newTable);
// For each element within the table (including the table)...
$.each( $( '*', wrapper ), function( i, elem ){
// Build a list of all attribute names...
var attributeNames = [];
$.each( elem.attributes, function( i, att ) {
attributeNames.push( att.nodeName );
});
// Then remove them.
attributeNames.forEach(function(attName){
$(elem).removeAttr( attName );
})
});
$('#result').text(wrapper.html());
// Your final table will have no attributes...
console.log( newTable[0] );
// But your original table will be untouched.
console.log( $('#exportme')[0] );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="exportme" class="foo" data-bar="baz" style="display:none;">
<tr class="firstr0w">
<td data-foobar="baz">But keep my data!</td>
</tr>
</table>
<div id="result"></div>
我有 table 并使用 JS 导出到 Excel。 <table>
标签有一些描述和class(<table class="someClassName" border="0" cellpadding="0" cellspacing="0">)
。
导出到Excel时,excel文件包含table的标签和值(<table> <tr> <td>value</td><td>value</td>...</tr>
),看起来一团糟!但是,如果我删除 <table>
中的所有描述和 class,当导出到 Excel 时,它看起来很好(没有 <table> <tr> <td>...
标签)。
一个问题是如何在不删除描述和 <table>
中的 class 的情况下使导出的 Excel 看起来很好?谢谢!
HTML
<div class="dvData">
<table class="header_detail" border="0" cellpadding="0" cellspacing="0">
<tr>
<th>Billing System</th>
<th>Market Code</th>
<th>Payment Amount</th>
</tr>
<tr>
<td>RED</td>
<td>222</td>
<td>3.00</td>
</tr>
<tr>
<td>BLUE</td>
<td>111</td>
<td>.00</td>
</tr>
<tr>
<td>GREEN</td>
<td>555</td>
<td>3.00</td>
</tr>
</table>
</div>
<br />
<input type="button" value="Export" class="toExcelButton" data-target="dvData" />
JS
$(document).ready(
function()
{
$(".toExcelButton").click(function(e) {
e.stopPropagation();
var table = $("." + $(this).data('target'));
window.open('data:application/vnd.ms-excel,' + $(table).html());
e.preventDefault();
});
}
);
您是否考虑过使用 excel.CSV 文件?
您可以将表项目移动到一个字符串中,项目之间用逗号分隔。希望这有帮助。
您可以使用jQuery的clone and removeAttr函数来解决这个问题。
var newTable = $('#exportme').clone(),
wrapper = $('<div>').append(newTable);
// For each element within the table (including the table)...
$.each( $( '*', wrapper ), function( i, elem ){
// Build a list of all attribute names...
var attributeNames = [];
$.each( elem.attributes, function( i, att ) {
attributeNames.push( att.nodeName );
});
// Then remove them.
attributeNames.forEach(function(attName){
$(elem).removeAttr( attName );
})
});
$('#result').text(wrapper.html());
// Your final table will have no attributes...
console.log( newTable[0] );
// But your original table will be untouched.
console.log( $('#exportme')[0] );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id="exportme" class="foo" data-bar="baz" style="display:none;">
<tr class="firstr0w">
<td data-foobar="baz">But keep my data!</td>
</tr>
</table>
<div id="result"></div>