У меня есть программа на 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 (/"/g, '"' ); // unescape all double quotes
Text = Text.replace (/'/g, "'" ); // unescape all single quotes
Text = Text.replace (/</g , "<" ); // unescape all <
Text = Text.replace (/>/g , ">" ); // unescape all >
Text = Text.replace (/&/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 для Mac ведет себя по-разному, как показано ниже:
- Если дважды щелкнуть, чтобы открытьфайл, он распознает преобразованные разрывы строк (в "\ n"), но не распознает кодировку UTF-8
- Если я импортирую данные с помощью диалога File / Import, он распознает кодировку UTF-8, но не распознает преобразованные переводы строк.
Я рад просто использовать MacOS Numbers, но поскольку полмира или больше используют Excel, я хотел бы иметь возможность создавать файл CSVe, который работал в Excel.
Вся помощь с благодарностью получена Спасибо