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

質問編集履歴

3

ソースコードを追記

2020/01/24 01:25

投稿

gemknight
gemknight

スコア13

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ファイル等は最新バージョンで適用しており、iPhone6以外では正常な動作を確認しています)
83
+ (jsファイル等は最新バージョンをダウンロードしており、iPhone6以外では正常な動作を確認しています)
19
84
 
20
85
  ### 試したこと
21
86
 

2

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

2020/01/24 01:25

投稿

gemknight
gemknight

スコア13

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のバージョンについて追記しました

2020/01/24 01:19

投稿

gemknight
gemknight

スコア13

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で試した場合は問題なくファイルをダウンロードできました。