Javascript 在Excel中将带换行符的值导出到单个单元格中。jQuery数据表
我正在使用jQuery DataTables成功地将HTML表格从web应用程序导出到excel。但是,有一个特定列的值包含换行符和制表符。通过分别用Javascript 在Excel中将带换行符的值导出到单个单元格中。jQuery数据表,javascript,jquery,excel,jquery-datatables,tabletools,Javascript,Jquery,Excel,Jquery Datatables,Tabletools,我正在使用jQuery DataTables成功地将HTML表格从web应用程序导出到excel。但是,有一个特定列的值包含换行符和制表符。通过分别用和(x5)替换新行(\n)和制表符(\t),我成功地在HTML表上正确显示了数据 问题是,当导出到excel时,我需要将换行符重新插入,但将所有值保留在一个单元格中 以下是我的jquery代码: $('#papercliptable')。数据表({ “sDom”:“Tlfrtip”, “表格工具”:{ “阿布顿”:[{ “性倾向”:“xls”, “
和(x5)替换新行(\n)和制表符(\t),我成功地在HTML表上正确显示了数据
问题是,当导出到excel时,我需要将换行符重新插入,但将所有值保留在一个单元格中
以下是我的jquery代码:
$('#papercliptable')。数据表({
“sDom”:“Tlfrtip”,
“表格工具”:{
“阿布顿”:[{
“性倾向”:“xls”,
“sButtonText”:“Excel”,
“fnCellRender”:函数(sValue、iColumn、nTr、iDataIndex){
console.log(“sValue=“+sValue”);
console.log(“iColumn=“+iColumn”);
返回sValue.replace(//ig,“\r\n”);
},
“sNewLine”:“\r\n”
}, {
“性倾向”:“打印”,
“sMessage”:“度量”
}]
}
});
学分:
这似乎对我不起作用。所有值均为单个单元格,但不包含新行字符
任何帮助都将不胜感激。
谢谢
尝试使用:
return sValue.replace(/<br\s*\/?>/ig, "\x0B");
返回svvalue.replace(//ig,“\x0B”);
产生以下结果
如果内容包含新行字符,则需要在双引号内对其进行分隔。所以使用
return '"' + sValue.replace(/<br\s*\/?>/ig, "\r\n") + '"';
return''+sValue.replace(//ig,“\r\n”)+';
当然,只有当内容包含\r\n(否则数字将被格式化为文本)时,才需要执行此操作。让我们看一个完整的示例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.7/css/jquery.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/tabletools/2.2.4/css/dataTables.tableTools.css">
<script type="text/javascript" language="javascript" src="https://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/tabletools/2.2.4/js/dataTables.tableTools.min.js"></script>
<script type="text/javascript" language="javascript" class="init">
$(document).ready(function() {
$('#papercliptable').DataTable( {
dom: 'T<"clear">lfrtip',
tableTools: {
"sSwfPath": "/copy_csv_xls_pdf.swf",
"aButtons": [{
"sExtends": "xls",
"sFileName": "test.csv",
"fnCellRender": function (sValue, iColumn, nTr, iDataIndex) {
console.log("sValue = " + sValue);
console.log("iColumn = " + iColumn);
re = /<br\s*\/?>/i;
if (re.test(sValue)) {
return '"' + sValue.replace(/<br\s*\/?>/ig, "\n") + '"';
} else {
return sValue;
}
}
}]
}
});
});
</script>
</head>
<body>
<table id="papercliptable">
<thead>
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
</tr>
</thead>
<tbody>
<tr>
<td>12345</td>
<td>Value1</td>
<td>Value2</td>
<td>This<br/>is<br/>a<br/>test.</td>
</tr>
</tbody>
</table>
</body>
</html>
注意,列之间的空格是水平选项卡“\t”
0x09
卓越:
注意,如果通过
文件-Open
打开*.csv
,则这是Excel中的结果。“文本导入向导”无法正确处理单元格内的换行符。已删除我的答案,sry它不起作用。已为此打开悬赏。我自己也很好奇:)-大卫康拉德似乎有些困惑。从代码中可以看出,软中断是用“\r\n”创建的,实际上是eol。“\n”实际上是excel格式的换行符。但是Excel中没有选项卡。Tab是一个事件。用“”替换制表符可能需要一些解释。这是关于jQuery dataTables和导出到ExcelYep的,右边的那个?这就是我查到的,尽管是字符串数据。嘿@psycho,这个答案能让你在单元格内保持换行符吗?格拉茨。我看过你的个人资料。您在Excel中的ekspertise和给出的示例使我相信,这是一个通常正确的答案,它将在未来帮助人们。对不起,但我相信在这种情况下没有“通常正确的答案”。由于tableTools生成的是CSV而不是XLS(X),因此它们的结果将永远取决于区域设置、系统以及Excel中的导入类型。
A B C D
12345 Value1 Value2 "This
is
a
test."