質問編集履歴

2

コードを追記

2016/10/05 08:09

投稿

ken
ken

スコア15

test CHANGED
File without changes
test CHANGED
@@ -1,11 +1,135 @@
1
1
  ###実現したいこと
2
2
 
3
- PHPExcelでファイルを作成しダウンロードさせるシステム作っています。
3
+ PHPExcelでファイルを作成しダウンロードさせるシステム作っています。
4
4
 
5
- そこでダウンロードしたファイルを開いたときに画像のようにセルが選択されている状態にしたいです。
5
+ そこでダウンロードしたファイルを開いたときに複数セルが選択されている状態にしたいです。
6
6
 
7
- setSelectedCells()で選択されているセルを変更することはできたのですが
8
7
 
9
- 複数のセルを選択状態にすることはできないのでしょうか?
10
8
 
9
+ テンプレートファイルはシートが1枚だけ
10
+
11
- ![イメージ説明](0d56e8d2c6838bc8be3cdeac6f8c7b0d.png)
11
+ ![イメージ説明](0181107487c580dcdc242f7406982874.png)
12
+
13
+
14
+
15
+ 以下がエクセルを作成しているコードになります
16
+
17
+ ```PHP
18
+
19
+ function createExcel() {
20
+
21
+ // 出力タイムアウトを3分に変更
22
+
23
+ set_time_limit(180);
24
+
25
+
26
+
27
+ ini_set('memory_limit' , '256M');
28
+
29
+
30
+
31
+ // テンプレートのコピー
32
+
33
+ $template = "テンプレートファイルのパス";
34
+
35
+ $savefile = "保存ファイル名";
36
+
37
+ $dest = "保存場所".$savefile;
38
+
39
+
40
+
41
+ copy($template, $dest);
42
+
43
+
44
+
45
+ // PHPExcelオブジェクトの生成
46
+
47
+ $reader = PHPExcel_IOFactory::createReader('Excel2007');
48
+
49
+ $xl = $reader->load($template);
50
+
51
+
52
+
53
+ $xl->setActiveSheetIndex(0);
54
+
55
+ $base_sheet = $xl->getActiveSheet();
56
+
57
+ $temp_sheet[0] = $base_sheet->copy();
58
+
59
+ $temp_sheet[0]->setTitle("newsheet0");
60
+
61
+
62
+
63
+ $temp_sheet[1] = $base_sheet->copy();
64
+
65
+ $temp_sheet[1]->setTitle("newsheet1");
66
+
67
+
68
+
69
+ $temp_sheet[2] = $base_sheet->copy();
70
+
71
+ $temp_sheet[2]->setTitle("newsheet2");
72
+
73
+
74
+
75
+ $temp_sheet[3] = $base_sheet->copy();
76
+
77
+ $temp_sheet[3]->setTitle("newsheet3");
78
+
79
+
80
+
81
+ // ------------------------------- //
82
+
83
+ // データの書き込み(省略) //
84
+
85
+ // ------------------------------- //
86
+
87
+
88
+
89
+ // --- シートの追加
90
+
91
+ for ($i = 0; $i < count($temp_sheet_month); $i++) {
92
+
93
+ $xl->addSheet($temp_sheet[$i]);
94
+
95
+ }
96
+
97
+
98
+
99
+ $sheet = $xl->setActiveSheetIndex(2);
100
+
101
+ // --- セルを選択状態にする
102
+
103
+ $sheet->setSelectedCells("C6:AM209");
104
+
105
+
106
+
107
+ // --- 不要なシートが2枚あるから削除
108
+
109
+ $xl->removeSheetByIndex(1);
110
+
111
+ $xl->removeSheetByIndex(0);
112
+
113
+
114
+
115
+ // Excel2007形式で保存
116
+
117
+ $writer = PHPExcel_IOFactory::createWriter($xl, 'Excel2007');
118
+
119
+ $writer->save($dest);
120
+
121
+
122
+
123
+ // メモリ解放
124
+
125
+ $xl->disconnectWorksheets();
126
+
127
+ unset($xl);
128
+
129
+
130
+
131
+ return $savefile;
132
+
133
+ }
134
+
135
+ ```

1

修正

2016/10/05 08:09

投稿

ken
ken

スコア15

test CHANGED
File without changes
test CHANGED
@@ -4,4 +4,8 @@
4
4
 
5
5
  そこでダウンロードしたファイルを開いたときに画像のようにセルが選択されている状態にしたいです。
6
6
 
7
+ setSelectedCells()で選択されているセルを変更することはできたのですが
8
+
9
+ 複数のセルを選択状態にすることはできないのでしょうか?
10
+
7
11
  ![イメージ説明](0d56e8d2c6838bc8be3cdeac6f8c7b0d.png)