javascriptでcsv読み込みのサンプルで
ダブルクォート内でのセル内改行したものにも対応したものが見つからなかったので作りました。
エクセルからテキストエディタにコピるとセル内改行したものはダブルクォートが付きますよね。
それに対応させましたので、セパレーターを\t
としてコーディングしました。
※セル内でダブルクォートが入ったデータには対応してないです。いつか直すかも?
function csvToArray(csvString) {
var separator = '\t';
var columnSize = csvString.split(/\r\n|\r|\n/)[0].split(separator).length;
var chars = Array.from(csvString.replace(/\r\n|\r|\n/g, '\n'));
var csvList = [];
var list = [];
var queteOpenFlg = false;
var buf = "";
for (var i = 0; i < chars.length; i++) {
console.log(columnSize);
if (chars[i] == '"') {
queteOpenFlg = queteOpenFlg == false;
} else {
if ((chars[i] == separator || chars[i] == '\n') && !queteOpenFlg) {
list.push(buf);
buf = "";
if (list.length == columnSize) {
csvList.push(list);
list = [];
}
} else {
buf += chars[i];
}
}
}
console.log(csvList[0][0]);
var csv = {};
csv.dataList = [];
for (var i = 0; i < csvList.length; i++) {
if (i == 0) {
csv.header = csvList[i];
} else {
csv.dataList.push(csvList[i]);
}
}
return csv;
};