LoginSignup
9
6

More than 5 years have passed since last update.

JavaScriptでCSV読み込み(ダブルクォート内でのセル内改行に対応)

Last updated at Posted at 2017-12-01

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;
};
9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6