teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

追記

2019/05/12 16:57

投稿

trafalbad
trafalbad

スコア303

title CHANGED
File without changes
body CHANGED
@@ -40,4 +40,18 @@
40
40
  reader.readAsText(fileData);
41
41
  });
42
42
  });
43
+ ```
44
+
45
+ #追記
46
+ ```javascript
47
+ reader.onload = function(e) {
48
+ // 行単位で配列にする
49
+ var lineArr = reader.result.split("\n");
50
+ // 行と列の二次元配列にする
51
+ var itemArr = [];
52
+ for (var i = 0; i < lineArr.length; i++) {
53
+ itemArr[i] = lineArr[i].split(",");
54
+ }
55
+ csvs = e.target.result;
56
+ console.log(csvs);
43
57
  ```

1

追記

2019/05/12 16:57

投稿

trafalbad
trafalbad

スコア303

title CHANGED
@@ -1,1 +1,1 @@
1
- javascriptでローカルのcsvを読み込む関のエラーついて
1
+ javascriptでローカルのcsvを読み込で変数に格納する方法
body CHANGED
@@ -1,31 +1,43 @@
1
- ローカルのcsvファイル(class_name.csv)を読み込み、javascript上で変数に格納したいですが、エラー出ます
1
+ ローカルのcsvファイル(class_name.csv)を読み込み、javascript上で変数に格納したいです。
2
2
 
3
- 下の関数は実行するとなぜ、csvファイルが返ってこなでしょうか?ご教授お願いします。
3
+ 下のようにアップロードしたcsvファイルを、javascript上で変数に格納するにはどうした良いでしょうか?
4
4
 
5
- [コード参考サイト](https://uxmilk.jp/11586)
5
+ ご教授お願いします。
6
6
 
7
- ```javascript
8
- function getCSV(){
9
- var req = new XMLHttpRequest(); // HTTPでファイルを読み込むためのXMLHttpRrequestオブジェクトを生成
7
+ [新コード参考サイト](http://cly7796.net/wp/javascript/read-csv-file-with-file-api/)
10
- req.open("get", "class_name.csv", true); // アクセスするファイルを指定
11
- req.send(null); // HTTPリクエストの発行
12
- // レスポンスが返ってきたらconvertCSVtoArray()を呼ぶ
13
- req.onload = function(){
14
- var result = []; // 最終的な二次元配列を入れるための配列
15
- var tmp = req.responseText.split("\n"); // 改行を区切り文字として行を要素とした配列を生成
16
- // 各行ごとにカンマで区切った文字列を要素とした二次元配列を生成
17
- for(var i=0;i<tmp.length;++i){
18
- result[i] = tmp[i].split(',');
19
- }
20
- };
21
- return result;
22
- }
23
8
 
9
+ ```html
10
+ <a id="result">
11
+ <input type="file" accept="csv" id="select" />
24
- //実行
12
+ CSV select</a>
25
- getCSV();
26
13
  ```
14
+ ```javascript
15
+ $("#select").click(function() {
16
+ var result = document.getElementById('result');
17
+ var select = document.getElementById('select');
27
18
 
28
- エラー
19
+ // ファイルが選択されたとき
29
- ```
30
- ReferenceError: Can't find variable: result
20
+ select.addEventListener('change', function(e) {
21
+ // 選択されたファイルの情報を取得
22
+ var fileData = e.target.files[0];
23
+
24
+ var reader = new FileReader();
25
+ // ファイル読み取りに失敗したとき
26
+ reader.onerror = function() {
27
+ alert('ファイル読み取りに失敗しました');
28
+ }
29
+ // ファイル読み取りに成功したとき
30
+ reader.onload = function() {
31
+ // 行単位で配列にする
32
+ var lineArr = reader.result.split("\n");
33
+ // 行と列の二次元配列にする
34
+ var itemArr = [];
35
+ for (var i = 0; i < lineArr.length; i++) {
36
+ itemArr[i] = lineArr[i].split(",");
37
+ }
38
+ };
39
+ // ファイル読み取りを実行
40
+ reader.readAsText(fileData);
41
+ });
42
+ });
31
43
  ```