使用UTF-8编码和包含换行符的字符串从Javascript生成CSV文件

时间:2018-12-03 14:29:58

标签: html excel csv

我有一个JavaScript程序,可以将HTML数据表导出为CSV。

此数据经过UTF-8编码,因此可以包含多种字符集(英语,法语,阿拉伯语,日语...)。

数据表中特定单元格的内容通常包含换行符

在写入文件之前,我将以下函数应用于每个表单元格的内容

function OutputFilter (Text)
{
Text = Text.replace (/<br>/g  , "\n"); // replace line breaks with new line
from = new RegExp ("<[^>]+>","g"); // replace any remaining HTML tags
to = "" ;
Text = Text.replace (from,to);
Text = Text.replace (/&quot;/g, '"'  ); // unescape all double quotes
Text = Text.replace (/&apos;/g, "'"  ); // unescape all single quotes
Text = Text.replace (/&lt;/g  , "<"  ); // unescape all <
Text = Text.replace (/&gt;/g  , ">"  ); // unescape all >
Text = Text.replace (/&amp;/g , "&"  ); // unescape all ampersands
var allQuotes = new RegExp ('"',"g"); //Text = Text.replace (/"/g, '""');
var twoQuotes = '""' ;
Text = Text.replace (allQuotes, twoQuotes); // duplicate all double quotes 
var commaInText   = Text.indexOf ("," ) != -1;
var quoteInText   = Text.indexOf ('"' ) != -1;
var newlineInText = Text.indexOf ("\n") != -1;
var commasRequired = commaInText || quoteInText || newlineInText ;
if (commasRequired) {return '"' + Text + '"' } else {return Text};
};

现在,我非常确定我正朝着正确的方向前进,因为Mac Numbers正确读取了输出CSV(或者我认为应该读取它们)。

Excel for Mac的行为不同,如下所示

  1. 如果我双击打开文件,它将识别转换后的换行符(至“ \ n”),但无法识别UTF-8编码
  2. 如果我使用“文件/导入”对话框导入数据,它可以识别UTF-8编码,但不能识别转换后的换行符。

我很高兴只使用MacOS Numbers,但由于有一半以上的人使用Excel,我希望能够生成在Excel中可用的CSV文件。

感谢所有帮助 谢谢

0 个答案:

没有答案