質問編集履歴

3

ソースコードを追記

2020/01/24 01:25

投稿

gemknight
gemknight

スコア13

test CHANGED
File without changes
test CHANGED
@@ -24,7 +24,137 @@
24
24
 
25
25
 
26
26
 
27
+ ```JavaScript
28
+
29
+ <!DOCTYPE html>
30
+
31
+ <html>
32
+
33
+ <head>
34
+
35
+ <meta charset="utf-8" />
36
+
37
+ <title>sample1</title>
38
+
39
+ <script src="js/xlsx.full.min.js"></script>
40
+
41
+ <script src="js/FileSaver.min.js"></script>
42
+
43
+ </head>
44
+
45
+ <body>
46
+
47
+ <input type="button" id="xlsx" value="Excelファイル出力" onclick="func1()">
48
+
49
+ <script language="javascript" type="text/javascript">
50
+
51
+ // 出力するオブジェクト(Array)
52
+
53
+ var array1 =
54
+
55
+ [
56
+
57
+ ["apple", "banana", "cherry"],
58
+
59
+ [1, 2, 3]
60
+
61
+ ];
62
+
63
+
64
+
27
- 参考したソースコードとほぼ同じため、リンクで貼らせてもらいま
65
+ // SheetをWorkbook追加
66
+
67
+ // 参照:https://github.com/SheetJS/js-xlsx/issues/163
68
+
69
+ function sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {
70
+
71
+ var n = opts && opts.sheet ? opts.sheet : "Sheet1";
72
+
73
+ var sheets = {}; sheets[n] = sheet;
74
+
75
+ return { SheetNames: [n], Sheets: sheets };
76
+
77
+ }
78
+
79
+
80
+
81
+ // ArrayをWorkbookに変換する
82
+
83
+ // 参照:https://github.com/SheetJS/js-xlsx/issues/163
84
+
85
+ function aoa_to_workbook(data/*:Array<Array<any> >*/, opts)/*:Workbook*/ {
86
+
87
+ return sheet_to_workbook(XLSX.utils.aoa_to_sheet(data, opts), opts);
88
+
89
+ }
90
+
91
+
92
+
93
+ // stringをArrayBufferに変換する
94
+
95
+ // 参照:https://stackoverflow.com/questions/34993292/how-to-save-xlsx-data-to-file-as-a-blob
96
+
97
+ function s2ab(s) {
98
+
99
+ var buf = new ArrayBuffer(s.length);
100
+
101
+ var view = new Uint8Array(buf);
102
+
103
+ for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
104
+
105
+ return buf;
106
+
107
+ }
108
+
109
+
110
+
111
+ function func1() {
112
+
113
+ // 書き込み時のオプションは以下を参照
114
+
115
+ // https://github.com/SheetJS/js-xlsx/blob/master/README.md#writing-options
116
+
117
+ var write_opts = {
118
+
119
+ type: 'binary'
120
+
121
+ };
122
+
123
+
124
+
125
+ // ArrayをWorkbookに変換する
126
+
127
+ var wb = aoa_to_workbook(array1);
128
+
129
+ var wb_out = XLSX.write(wb, write_opts);
130
+
131
+
132
+
133
+ // WorkbookからBlobオブジェクトを生成
134
+
135
+ // 参照:https://developer.mozilla.org/ja/docs/Web/API/Blob
136
+
137
+ var blob = new Blob([s2ab(wb_out)], { type: 'application/octet-stream' });
138
+
139
+
140
+
141
+ // FileSaverのsaveAs関数で、xlsxファイルとしてダウンロード
142
+
143
+ // 参照:https://github.com/eligrey/FileSaver.js/
144
+
145
+ saveAs(blob, 'myExcelFile.xlsx');
146
+
147
+ }
148
+
149
+ </script>
150
+
151
+ </body>
152
+
153
+ </html>
154
+
155
+ ```
156
+
157
+
28
158
 
29
159
  (こちらのソースコードでも同じ挙動が起こります)
30
160
 
@@ -32,7 +162,7 @@
32
162
 
33
163
  https://techacademy.jp/magazine/21073
34
164
 
35
- (jsファイル等は最新バージョンで適用しており、iPhone6以外では正常な動作を確認しています)
165
+ (jsファイル等は最新バージョンをダウンロードしており、iPhone6以外では正常な動作を確認しています)
36
166
 
37
167
 
38
168
 

2

jsファイルの適用バージョンについて追記

2020/01/24 01:25

投稿

gemknight
gemknight

スコア13

test CHANGED
File without changes
test CHANGED
@@ -32,6 +32,8 @@
32
32
 
33
33
  https://techacademy.jp/magazine/21073
34
34
 
35
+ (jsファイル等は最新バージョンで適用しており、iPhone6以外では正常な動作を確認しています)
36
+
35
37
 
36
38
 
37
39
  ### 試したこと

1

iPhoneのバージョンについて追記しました

2020/01/24 01:19

投稿

gemknight
gemknight

スコア13

test CHANGED
File without changes
test CHANGED
@@ -9,6 +9,8 @@
9
9
  ### 発生している問題
10
10
 
11
11
 
12
+
13
+ 環境はiPhone6(iOS12.44)です。
12
14
 
13
15
  safariではunknown、chromeではdocumentとファイル名が書き換えられます。
14
16
 
@@ -36,4 +38,4 @@
36
38
 
37
39
 
38
40
 
39
- Androidで試した場合は問題なくファイルをダウンロードできました。
41
+ iPhone7(iOS13.3)とAndroidで試した場合は問題なくファイルをダウンロードできました。