Javascript 在Excel中将带换行符的值导出到单个单元格中。jQuery数据表

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”, “

我正在使用jQuery DataTables成功地将HTML表格从web应用程序导出到excel。但是,有一个特定列的值包含换行符和制表符。通过分别用

和(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."