回答編集履歴

1

追加

2020/01/17 11:32

投稿

KazuSaka
KazuSaka

スコア640

test CHANGED
@@ -27,3 +27,135 @@
27
27
  });
28
28
 
29
29
  ```
30
+
31
+
32
+
33
+ ### 追記
34
+
35
+
36
+
37
+ 2次元配列をHTMLTableElementに変換して、XLSXに出力できることを確認しておきました。
38
+
39
+ 以下、コード。
40
+
41
+
42
+
43
+ ```HTML
44
+
45
+ <!DOCTYPE html>
46
+
47
+ <html>
48
+
49
+ <head>
50
+
51
+ <meta charset="utf-8" />
52
+
53
+ <title>sample1</title>
54
+
55
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.14.2/xlsx.full.min.js"></script>
56
+
57
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.min.js"></script>
58
+
59
+ </head>
60
+
61
+ <body>
62
+
63
+ <input type="button" id="xlsx" value="Excel出力" onclick="func1()">
64
+
65
+ <script language="javascript" type="text/javascript">
66
+
67
+ var array1 = [ ["apple", "banana", "cherry"], [1, 2, 3] ];
68
+
69
+
70
+
71
+ function func1() {
72
+
73
+ var wopts = {
74
+
75
+ bookType: 'xlsx',
76
+
77
+ bookSST: false,
78
+
79
+ type: 'binary'
80
+
81
+ };
82
+
83
+
84
+
85
+ var workbook = {SheetNames: [], Sheets: {}};
86
+
87
+
88
+
89
+ var n = 'Sheet' + 1;
90
+
91
+ workbook.SheetNames.push(n);
92
+
93
+ // workbook.Sheets[n] = array1;
94
+
95
+ workbook.Sheets[n] = XLSX.utils.table_to_sheet(ARRAY_TO_OBJ(array1), wopts); //配列をTableElementに変換してセット
96
+
97
+
98
+
99
+ var wbout = XLSX.write(workbook, wopts);
100
+
101
+
102
+
103
+ saveAs(new Blob([s2ab(wbout)], {type: 'application/octet-stream'}), 'test.xlsx');
104
+
105
+ }
106
+
107
+
108
+
109
+ function s2ab(s) {
110
+
111
+ var buf = new ArrayBuffer(s.length);
112
+
113
+ var view = new Uint8Array(buf);
114
+
115
+ for (var i = 0; i != s.length; ++i) {
116
+
117
+ view[i] = s.charCodeAt(i) & 0xFF;
118
+
119
+ }
120
+
121
+ return buf;
122
+
123
+ }
124
+
125
+
126
+
127
+ //2次元配列をテーブルエレメントに変換して返す
128
+
129
+ function ARRAY_TO_OBJ(array){
130
+
131
+ // 要素の取得
132
+
133
+ var element = document.createElement("table"); //table生成
134
+
135
+ array.forEach(function (arr) {
136
+
137
+ var row = element.insertRow( -1 ) ; //行追加
138
+
139
+ arr.forEach(function (value) {
140
+
141
+ var cell = row.insertCell() ; //セル追加
142
+
143
+ cell.textContent = value ; //セル1に値セット
144
+
145
+ });
146
+
147
+ });
148
+
149
+ return element
150
+
151
+ }
152
+
153
+ </script>
154
+
155
+ </body>
156
+
157
+ </html>
158
+
159
+
160
+
161
+ ```