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

質問編集履歴

2

コードを追記

2016/10/05 08:09

投稿

ken
ken

スコア15

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,68 @@
1
1
  ###実現したいこと
2
- PHPExcelでファイルを作成しダウンロードさせるシステム作っています。
2
+ PHPExcelでファイルを作成しダウンロードさせるシステム作っています。
3
- そこでダウンロードしたファイルを開いたときに画像のようにセルが選択されている状態にしたいです。
3
+ そこでダウンロードしたファイルを開いたときに複数セルが選択されている状態にしたいです。
4
- setSelectedCells()で選択されているセルを変更することはできたのですが
4
+
5
- 複数のセを選択状態にすることできないのでしょうか?
5
+ テンプレートファイルはシートが1枚だけ
6
- ![イメージ説明](0d56e8d2c6838bc8be3cdeac6f8c7b0d.png)
6
+ ![イメージ説明](0181107487c580dcdc242f7406982874.png)
7
+
8
+ 以下がエクセルを作成しているコードになります
9
+ ```PHP
10
+ function createExcel() {
11
+ // 出力タイムアウトを3分に変更
12
+ set_time_limit(180);
13
+
14
+ ini_set('memory_limit' , '256M');
15
+
16
+ // テンプレートのコピー
17
+ $template = "テンプレートファイルのパス";
18
+ $savefile = "保存ファイル名";
19
+ $dest = "保存場所".$savefile;
20
+
21
+ copy($template, $dest);
22
+
23
+ // PHPExcelオブジェクトの生成
24
+ $reader = PHPExcel_IOFactory::createReader('Excel2007');
25
+ $xl = $reader->load($template);
26
+
27
+ $xl->setActiveSheetIndex(0);
28
+ $base_sheet = $xl->getActiveSheet();
29
+ $temp_sheet[0] = $base_sheet->copy();
30
+ $temp_sheet[0]->setTitle("newsheet0");
31
+
32
+ $temp_sheet[1] = $base_sheet->copy();
33
+ $temp_sheet[1]->setTitle("newsheet1");
34
+
35
+ $temp_sheet[2] = $base_sheet->copy();
36
+ $temp_sheet[2]->setTitle("newsheet2");
37
+
38
+ $temp_sheet[3] = $base_sheet->copy();
39
+ $temp_sheet[3]->setTitle("newsheet3");
40
+
41
+ // ------------------------------- //
42
+ // データの書き込み(省略) //
43
+ // ------------------------------- //
44
+
45
+ // --- シートの追加
46
+ for ($i = 0; $i < count($temp_sheet_month); $i++) {
47
+ $xl->addSheet($temp_sheet[$i]);
48
+ }
49
+
50
+ $sheet = $xl->setActiveSheetIndex(2);
51
+ // --- セルを選択状態にする
52
+ $sheet->setSelectedCells("C6:AM209");
53
+
54
+ // --- 不要なシートが2枚あるから削除
55
+ $xl->removeSheetByIndex(1);
56
+ $xl->removeSheetByIndex(0);
57
+
58
+ // Excel2007形式で保存
59
+ $writer = PHPExcel_IOFactory::createWriter($xl, 'Excel2007');
60
+ $writer->save($dest);
61
+
62
+ // メモリ解放
63
+ $xl->disconnectWorksheets();
64
+ unset($xl);
65
+
66
+ return $savefile;
67
+ }
68
+ ```

1

修正

2016/10/05 08:09

投稿

ken
ken

スコア15

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,6 @@
1
1
  ###実現したいこと
2
2
  PHPExcelでファイルを作成しダウンロードさせるシステム作っています。
3
3
  そこでダウンロードしたファイルを開いたときに画像のようにセルが選択されている状態にしたいです。
4
+ setSelectedCells()で選択されているセルを変更することはできたのですが
5
+ 複数のセルを選択状態にすることはできないのでしょうか?
4
6
  ![イメージ説明](0d56e8d2c6838bc8be3cdeac6f8c7b0d.png)