質問編集履歴
3
ソースコードを追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -11,11 +11,76 @@
|
|
11
11
|
|
12
12
|
### 該当のソースコード
|
13
13
|
|
14
|
+
```JavaScript
|
15
|
+
<!DOCTYPE html>
|
16
|
+
<html>
|
17
|
+
<head>
|
18
|
+
<meta charset="utf-8" />
|
19
|
+
<title>sample1</title>
|
20
|
+
<script src="js/xlsx.full.min.js"></script>
|
21
|
+
<script src="js/FileSaver.min.js"></script>
|
22
|
+
</head>
|
23
|
+
<body>
|
24
|
+
<input type="button" id="xlsx" value="Excelファイル出力" onclick="func1()">
|
25
|
+
<script language="javascript" type="text/javascript">
|
26
|
+
// 出力するオブジェクト(Array)
|
27
|
+
var array1 =
|
28
|
+
[
|
29
|
+
["apple", "banana", "cherry"],
|
30
|
+
[1, 2, 3]
|
31
|
+
];
|
32
|
+
|
14
|
-
|
33
|
+
// SheetをWorkbookに追加する
|
34
|
+
// 参照:https://github.com/SheetJS/js-xlsx/issues/163
|
35
|
+
function sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {
|
36
|
+
var n = opts && opts.sheet ? opts.sheet : "Sheet1";
|
37
|
+
var sheets = {}; sheets[n] = sheet;
|
38
|
+
return { SheetNames: [n], Sheets: sheets };
|
39
|
+
}
|
40
|
+
|
41
|
+
// ArrayをWorkbookに変換する
|
42
|
+
// 参照:https://github.com/SheetJS/js-xlsx/issues/163
|
43
|
+
function aoa_to_workbook(data/*:Array<Array<any> >*/, opts)/*:Workbook*/ {
|
44
|
+
return sheet_to_workbook(XLSX.utils.aoa_to_sheet(data, opts), opts);
|
45
|
+
}
|
46
|
+
|
47
|
+
// stringをArrayBufferに変換する
|
48
|
+
// 参照:https://stackoverflow.com/questions/34993292/how-to-save-xlsx-data-to-file-as-a-blob
|
49
|
+
function s2ab(s) {
|
50
|
+
var buf = new ArrayBuffer(s.length);
|
51
|
+
var view = new Uint8Array(buf);
|
52
|
+
for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
|
53
|
+
return buf;
|
54
|
+
}
|
55
|
+
|
56
|
+
function func1() {
|
57
|
+
// 書き込み時のオプションは以下を参照
|
58
|
+
// https://github.com/SheetJS/js-xlsx/blob/master/README.md#writing-options
|
59
|
+
var write_opts = {
|
60
|
+
type: 'binary'
|
61
|
+
};
|
62
|
+
|
63
|
+
// ArrayをWorkbookに変換する
|
64
|
+
var wb = aoa_to_workbook(array1);
|
65
|
+
var wb_out = XLSX.write(wb, write_opts);
|
66
|
+
|
67
|
+
// WorkbookからBlobオブジェクトを生成
|
68
|
+
// 参照:https://developer.mozilla.org/ja/docs/Web/API/Blob
|
69
|
+
var blob = new Blob([s2ab(wb_out)], { type: 'application/octet-stream' });
|
70
|
+
|
71
|
+
// FileSaverのsaveAs関数で、xlsxファイルとしてダウンロード
|
72
|
+
// 参照:https://github.com/eligrey/FileSaver.js/
|
73
|
+
saveAs(blob, 'myExcelFile.xlsx');
|
74
|
+
}
|
75
|
+
</script>
|
76
|
+
</body>
|
77
|
+
</html>
|
78
|
+
```
|
79
|
+
|
15
80
|
(こちらのソースコードでも同じ挙動が起こります)
|
16
81
|
↓参考にしたサイト
|
17
82
|
https://techacademy.jp/magazine/21073
|
18
|
-
(jsファイル等は最新バージョン
|
83
|
+
(jsファイル等は最新バージョンをダウンロードしており、iPhone6以外では正常な動作を確認しています)
|
19
84
|
|
20
85
|
### 試したこと
|
21
86
|
|
2
jsファイルの適用バージョンについて追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -15,6 +15,7 @@
|
|
15
15
|
(こちらのソースコードでも同じ挙動が起こります)
|
16
16
|
↓参考にしたサイト
|
17
17
|
https://techacademy.jp/magazine/21073
|
18
|
+
(jsファイル等は最新バージョンで適用しており、iPhone6以外では正常な動作を確認しています)
|
18
19
|
|
19
20
|
### 試したこと
|
20
21
|
|
1
iPhoneのバージョンについて追記しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
|
5
5
|
### 発生している問題
|
6
6
|
|
7
|
+
環境はiPhone6(iOS12.44)です。
|
7
8
|
safariではunknown、chromeではdocumentとファイル名が書き換えられます。
|
8
9
|
(拡張子も無くなりますがパソコン上で拡張子を変更すると無事に閲覧できます)
|
9
10
|
そのためプログラムで設定した名前でダウンロードすることができません。
|
@@ -17,4 +18,4 @@
|
|
17
18
|
|
18
19
|
### 試したこと
|
19
20
|
|
20
|
-
Androidで試した場合は問題なくファイルをダウンロードできました。
|
21
|
+
iPhone7(iOS13.3)とAndroidで試した場合は問題なくファイルをダウンロードできました。
|