Completed
Pull Request — master (#2)
by satoru
02:07
created

PhpExcelWrapper::setStyle()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 27
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 0
loc 27
rs 8.8571
cc 1
eloc 24
nc 1
nop 4
1
<?php
2
3
namespace PhpExcelWrapper;
4
5
use \PHPExcel_IOFactory;
6
use \PHPExcel_Cell;
7
use \PHPExcel_Worksheet_Drawing;
8
use \PHPExcel_Style_Border;
9
use \PHPExcel_Style_Alignment;
10
use \PHPExcel_Style_Fill;
11
12
/**
13
* PhpExcelWrapper
14
* PHPExcelを記載しやすくするためのラッパー
15
*/
16
class PhpExcelWrapper
17
{
18
    private $__phpexcel;
19
    private $__sheet = [];
20
    private $__deleteSheetList = [];
21
    private static $__borderType = [
22
        'none' => PHPExcel_Style_Border::BORDER_NONE,
23
        'thin' => PHPExcel_Style_Border::BORDER_THIN,
24
        'medium' => PHPExcel_Style_Border::BORDER_MEDIUM,
25
        'dashed' => PHPExcel_Style_Border::BORDER_DASHED,
26
        'dotted' => PHPExcel_Style_Border::BORDER_DOTTED,
27
        'thick' => PHPExcel_Style_Border::BORDER_THICK,
28
        'double' => PHPExcel_Style_Border::BORDER_DOUBLE,
29
        'hair' => PHPExcel_Style_Border::BORDER_HAIR,
30
        'mediumdashed' => PHPExcel_Style_Border::BORDER_MEDIUMDASHED,
31
        'dashdot' => PHPExcel_Style_Border::BORDER_DASHDOT,
32
        'mediumdashdot' => PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT,
33
        'dashdotdot' => PHPExcel_Style_Border::BORDER_DASHDOTDOT,
34
        'mediumdashdotdot' => PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT,
35
        'slantdashdot' => PHPExcel_Style_Border::BORDER_SLANTDASHDOT,
36
    ];
37
38
    private static $__alignHolizonalType = [
39
        'general' => PHPExcel_Style_Alignment::HORIZONTAL_GENERAL,
40
        'center' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
41
        'left' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
42
        'right' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,
43
        'justify' => PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY,
44
        'countinuous' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS,
45
    ];
46
47
    private static $__alignVerticalType = [
48
        'bottom' => PHPExcel_Style_Alignment::VERTICAL_BOTTOM,
49
        'center' => PHPExcel_Style_Alignment::VERTICAL_CENTER,
50
        'justify' => PHPExcel_Style_Alignment::VERTICAL_JUSTIFY,
51
        'top' => PHPExcel_Style_Alignment::VERTICAL_TOP,
52
    ];
53
54
    private static $__fillType = [
55
        'linear' => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR,
56
        'path' => PHPExcel_Style_Fill::FILL_GRADIENT_PATH,
57
        'none' => PHPExcel_Style_Fill::FILL_NONE,
58
        'darkdown' => PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN,
59
        'darkgray' => PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY,
60
        'darkgrid' => PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID,
61
        'darkhorizontal' => PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL,
62
        'darktrellis' => PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS,
63
        'darkup' => PHPExcel_Style_Fill::FILL_PATTERN_DARKUP,
64
        'darkvertical' => PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL,
65
        'gray0625' => PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625,
66
        'gray125' => PHPExcel_Style_Fill::FILL_PATTERN_GRAY125,
67
        'lightdown' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN,
68
        'lightgray' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY,
69
        'lightgrid' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID,
70
        'lighthorizontal' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL,
71
        'lighttrellis' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS,
72
        'lightup' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP,
73
        'lightvertical' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL,
74
        'mediumgray' => PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY,
75
        'solid' => PHPExcel_Style_Fill::FILL_SOLID,
76
    ];
77
78
    /**
79
    * __construct
80
    *
81
    * @param string $template テンプレートファイルのパス
82
    * @author hagiwara
83
    */
84
    public function __construct($template = null, $type = 'Excel2007')
85
    {
86
        if ($template === null) {
87
            //テンプレート無し
88
            $this->__phpexcel = new \PHPExcel();
89
        } else {
90
            //テンプレートの読み込み
91
            $reader = PHPExcel_IOFactory::createReader($type);
92
            $this->__phpexcel = $reader->load($template);
93
        }
94
    }
95
96
    /**
97
    * setVal
98
    * 値のセット
99
    * @param string $value 値
100
    * @param integer $col 行
101
    * @param integer $row 列
102
    * @param integer $sheetNo シート番号
103
    * @param integer $refCol 参照セル行
104
    * @param integer $refRow 参照セル列
105
    * @param integer $refSheet 参照シート
106
    * @author hagiwara
107
    */
108
    public function setVal($value, $col, $row, $sheetNo = 0, $refCol = null, $refRow = null, $refSheet = 0)
109
    {
110
        $cellInfo = $this->cellInfo($col, $row);
111
        //値のセット
112
        $this->getSheet($sheetNo)->setCellValue($cellInfo, $value);
113
114
        //参照セルの指定がある場合には書式をコピーする
115
        if (!is_null($refCol) && !is_null($refRow)) {
116
            $this->styleCopy($col, $row, $sheetNo, $refCol, $refRow, $refSheet);
117
        }
118
    }
119
120
    /**
121
    * setImage
122
    * 画像のセット
123
    * @param string $img 画像のファイルパス
124
    * @param integer $col 行
125
    * @param integer $row 列
126
    * @param integer $sheetNo シート番号
127
    * @param integer $height 画像の縦幅
128
    * @param integer $width 画像の横幅
129
    * @param boolean $proportial 縦横比を維持するか
130
    * @param integer $offsetx セルから何ピクセルずらすか(X軸)
131
    * @param integer $offsety セルから何ピクセルずらすか(Y軸)
132
    * @author hagiwara
133
    */
134
    public function setImage($img, $col, $row, $sheetNo = 0, $height = null, $width = null, $proportial = false, $offsetx = null, $offsety = null)
135
    {
136
        $cellInfo = $this->cellInfo($col, $row);
137
138
        $objDrawing = new PHPExcel_Worksheet_Drawing();//画像用のオプジェクト作成
139
        $objDrawing->setPath($img);//貼り付ける画像のパスを指定
140
        $objDrawing->setCoordinates($cellInfo);//位置
141
        if (!is_null($height)) {
142
            $objDrawing->setHeight($height);//画像の高さを指定
143
        }
144
        if (!is_null($width)) {
145
            $objDrawing->setWidth($width);//画像の高さを指定
146
        }
147
        if (!is_null($proportial)) {
148
            $objDrawing->setResizeProportional($proportial);//縦横比の変更なし
149
        }
150
        if (!is_null($offsetx)) {
151
            $objDrawing->setOffsetX($offsetx);//指定した位置からどれだけ横方向にずらすか。
152
        }
153
        if (!is_null($offsety)) {
154
            $objDrawing->setOffsetY($offsety);//指定した位置からどれだけ縦方向にずらすか。
155
        }
156
        $objDrawing->setWorksheet($this->getSheet($sheetNo));
157
    }
158
159
    /**
160
    * cellMerge
161
    * セルのマージ
162
    * @param integer $col1 行
163
    * @param integer $row1 列
164
    * @param integer $col2 行
165
    * @param integer $row2 列
166
    * @param integer $sheetNo シート番号
167
    * @author hagiwara
168
    */
169
    public function cellMerge($col1, $row1, $col2, $row2, $sheetNo)
170
    {
171
        $cell1Info = $this->cellInfo($col1, $row1);
172
        $cell2Info = $this->cellInfo($col2, $row2);
173
174
        $this->getSheet($sheetNo)->mergeCells($cell1Info . ':' . $cell2Info);
175
    }
176
177
178
    /**
179
    * styleCopy
180
    * セルの書式コピー
181
    * @param integer $col 行
182
    * @param integer $row 列
183
    * @param integer $sheetNo シート番号
184
    * @param integer $refCol 参照セル行
185
    * @param integer $refRow 参照セル列
186
    * @param integer $refSheet 参照シート
187
    * @author hagiwara
188
    */
189
    public function styleCopy($col, $row, $sheetNo, $refCol, $refRow, $refSheet)
190
    {
191
        $cellInfo = $this->cellInfo($col, $row);
192
        $refCellInfo = $this->cellInfo($refCol, $refRow);
193
        $style = $this->getSheet($refSheet)->getStyle($refCellInfo);
194
195
        $this->getSheet($sheetNo)->duplicateStyle($style, $cellInfo);
196
    }
197
198
    /**
199
    * setStyle
200
    * 書式のセット(まとめて)
201
    * @param integer $col 行
202
    * @param integer $row 列
203
    * @param integer $sheetNo シート番号
204
    * @param array $style スタイル情報
205
    * @author hagiwara
206
    */
207
    public function setStyle($col, $row, $sheetNo, $style)
208
    {
209
        $default_style = [
210
            'font' => null,
211
            'underline' => null,
212
            'bold' => null,
213
            'italic' => null,
214
            'strikethrough' => null,
215
            'color' => null,
216
            'size' => null,
217
            'alignh' => null,
218
            'alignv' => null,
219
            'bgcolor' => null,
220
            'bgpattern' => null,
221
        ];
222
        $style = array_merge($default_style, $style);
223
        $this->setFontName($col, $row, $sheetNo, $style['font']);
224
        $this->setUnderline($col, $row, $sheetNo, $style['underline']);
0 ignored issues
show
Documentation introduced by
$style['underline'] is of type null, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
225
        $this->setFontBold($col, $row, $sheetNo, $style['bold']);
0 ignored issues
show
Documentation introduced by
$style['bold'] is of type null, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
226
        $this->setItalic($col, $row, $sheetNo, $style['italic']);
0 ignored issues
show
Documentation introduced by
$style['italic'] is of type null, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
227
        $this->setStrikethrough($col, $row, $sheetNo, $style['strikethrough']);
0 ignored issues
show
Documentation introduced by
$style['strikethrough'] is of type null, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
228
        $this->setColor($col, $row, $sheetNo, $style['color']);
229
        $this->setSize($col, $row, $sheetNo, $style['size']);
230
        $this->setAlignHolizonal($col, $row, $sheetNo, $style['alignh']);
231
        $this->setAlignVertical($col, $row, $sheetNo, $style['alignv']);
232
        $this->setBackgroundColor($col, $row, $sheetNo, $style['bgcolor'], $style['bgpattern']);
233
    }
234
235
    /**
236
    * setFontName
237
    * フォントのセット
238
    * @param integer $col 行
239
    * @param integer $row 列
240
    * @param integer $sheetNo シート番号
241
    * @param string $fontName フォント名
242
    * @author hagiwara
243
    */
244 View Code Duplication
    public function setFontName($col, $row, $sheetNo, $fontName)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
245
    {
246
        if (is_null($fontName)) {
247
            return;
248
        }
249
        $cellInfo = $this->cellInfo($col, $row);
250
        $this->getSheet($sheetNo)->getStyle($cellInfo)->getFont()->setName($fontName);
251
    }
252
253
    /**
254
    * setUnderline
255
    * 下線のセット
256
    * @param integer $col 行
257
    * @param integer $row 列
258
    * @param integer $sheetNo シート番号
259
    * @param boolean $underline 下線を引くか
260
    * @author hagiwara
261
    */
262 View Code Duplication
    public function setUnderline($col, $row, $sheetNo, $underline)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
263
    {
264
        if (is_null($underline)) {
265
            return;
266
        }
267
        $cellInfo = $this->cellInfo($col, $row);
268
        $this->getSheet($sheetNo)->getStyle($cellInfo)->getFont()->setUnderline($underline);
269
    }
270
271
    /**
272
    * setFontBold
273
    * 太字のセット
274
    * @param integer $col 行
275
    * @param integer $row 列
276
    * @param integer $sheetNo シート番号
277
    * @param boolean $bold 太字を引くか
278
    * @author hagiwara
279
    */
280 View Code Duplication
    public function setFontBold($col, $row, $sheetNo, $bold)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
281
    {
282
        if (is_null($bold)) {
283
            return;
284
        }
285
        $cellInfo = $this->cellInfo($col, $row);
286
        $this->getSheet($sheetNo)->getStyle($cellInfo)->getFont()->setBold($bold);
287
    }
288
289
    /**
290
    * setItalic
291
    * イタリックのセット
292
    * @param integer $col 行
293
    * @param integer $row 列
294
    * @param integer $sheetNo シート番号
295
    * @param boolean $italic イタリックにするか
296
    * @author hagiwara
297
    */
298 View Code Duplication
    public function setItalic($col, $row, $sheetNo, $italic)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
299
    {
300
        if (is_null($italic)) {
301
            return;
302
        }
303
        $cellInfo = $this->cellInfo($col, $row);
304
        $this->getSheet($sheetNo)->getStyle($cellInfo)->getFont()->setBold($italic);
305
    }
306
307
    /**
308
    * setStrikethrough
309
    * 打ち消し線のセット
310
    * @param integer $col 行
311
    * @param integer $row 列
312
    * @param integer $sheetNo シート番号
313
    * @param boolean $strikethrough 打ち消し線をつけるか
314
    * @author hagiwara
315
    */
316 View Code Duplication
    public function setStrikethrough($col, $row, $sheetNo, $strikethrough)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
317
    {
318
        if (is_null($strikethrough)) {
319
            return;
320
        }
321
        $cellInfo = $this->cellInfo($col, $row);
322
        $this->getSheet($sheetNo)->getStyle($cellInfo)->getFont()->setStrikethrough($strikethrough);
323
    }
324
325
    /**
326
    * setColor
327
    * 文字の色
328
    * @param integer $col 行
329
    * @param integer $row 列
330
    * @param integer $sheetNo シート番号
331
    * @param string $color 色(ARGB)
332
    * @author hagiwara
333
    */
334 View Code Duplication
    public function setColor($col, $row, $sheetNo, $color)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
335
    {
336
        if (is_null($color)) {
337
            return;
338
        }
339
        $cellInfo = $this->cellInfo($col, $row);
340
        $this->getSheet($sheetNo)->getStyle($cellInfo)->getFont()->getColor()->setARGB($color);
341
    }
342
343
    /**
344
    * setSize
345
    * 文字サイズ
346
    * @param integer $col 行
347
    * @param integer $row 列
348
    * @param integer $sheetNo シート番号
349
    * @param integer $size
350
    * @author hagiwara
351
    */
352 View Code Duplication
    public function setSize($col, $row, $sheetNo, $size)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
353
    {
354
        if (is_null($size)) {
355
            return;
356
        }
357
        $cellInfo = $this->cellInfo($col, $row);
358
        $this->getSheet($sheetNo)->getStyle($cellInfo)->getFont()->setSize($size);
359
    }
360
361
    /**
362
    * setAlignHolizonal
363
    * 水平方向のalign
364
    * @param integer $col 行
365
    * @param integer $row 列
366
    * @param integer $sheetNo シート番号
367
    * @param string $type
368
    * typeはgetAlignHolizonalType参照
369
    * @author hagiwara
370
    */
371 View Code Duplication
    public function setAlignHolizonal($col, $row, $sheetNo, $type)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
372
    {
373
        if (is_null($type)) {
374
            return;
375
        }
376
        $cellInfo = $this->cellInfo($col, $row);
377
        $this->getSheet($sheetNo)->getStyle($cellInfo)->getAlignment()->setHorizontal($this->getAlignHolizonalType($type));
378
    }
379
380
    /**
381
    * setAlignVertical
382
    * 垂直方法のalign
383
    * @param integer $col 行
384
    * @param integer $row 列
385
    * @param integer $sheetNo シート番号
386
    * @param string $type
387
    * typeはgetAlignVerticalType参照
388
    * @author hagiwara
389
    */
390 View Code Duplication
    public function setAlignVertical($col, $row, $sheetNo, $type)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
391
    {
392
        if (is_null($type)) {
393
            return;
394
        }
395
        $cellInfo = $this->cellInfo($col, $row);
396
        $this->getSheet($sheetNo)->getStyle($cellInfo)->getAlignment()->setVertical($this->getAlignVerticalType($type));
397
    }
398
399
    /**
400
    * setBorder
401
    * 罫線の設定
402
    * @param integer $col 行
403
    * @param integer $row 列
404
    * @param integer $sheetNo シート番号
405
    * @param array $border
406
    * borderの内部はgetBorderType参照
407
    * @author hagiwara
408
    */
409
    public function setBorder($col, $row, $sheetNo, $border)
410
    {
411
        $cellInfo = $this->cellInfo($col, $row);
412
        $default_border = [
413
            'left' => null,
414
            'right' => null,
415
            'top' => null,
416
            'bottom' => null,
417
            'diagonal' => null,
418
            'all_borders' => null,
419
            'outline' => null,
420
            'inside' => null,
421
            'vertical' => null,
422
            'horizontal' => null,
423
        ];
424
        $border = array_merge($default_border, $border);
425
        foreach ($border as $border_position => $border_setting) {
426
            if (!is_null($border_setting)) {
427
                $borderInfo =  $this->getSheet($sheetNo)->getStyle($cellInfo)->getBorders()->{'get' . $this->camelize($border_position)}();
428
                if (array_key_exists('type', $border_setting)) {
429
                    $borderInfo->setBorderStyle($this->getBorderType($border_setting['type']));
430
                }
431
                if (array_key_exists('color', $border_setting)) {
432
                    $borderInfo->getColor()->setARGB($border_setting['color']);
433
                }
434
            }
435
        }
436
    }
437
438
    /**
439
    * setBackgroundColor
440
    * 背景色の設定
441
    * @param integer $col 行
442
    * @param integer $row 列
443
    * @param integer $sheetNo シート番号
444
    * @param string $color 色
445
    * @param string $fillType 塗りつぶし方(デフォルトsolid)
446
    * fillTypeの内部はgetFillType参照
447
    * @author hagiwara
448
    */
449
    public function setBackgroundColor($col, $row, $sheetNo, $color, $fillType = 'solid')
450
    {
451
        $cellInfo = $this->cellInfo($col, $row);
452
453
        $this->getSheet($sheetNo)->getStyle($cellInfo)->getFill()->setFillType($this->getFillType($fillType))->getStartColor()->setARGB($color);
454
    }
455
456
    /**
457
    * getBorderType
458
    * 罫線の種類の設定
459
    * @param string $type
460
    * @author hagiwara
461
    */
462
    private function getBorderType($type)
463
    {
464
        $type_list = self::$__borderType;
465
        if (array_key_exists($type, $type_list)) {
466
            return $type_list[$type];
467
        }
468
        return PHPExcel_Style_Border::BORDER_NONE;
469
    }
470
471
    /**
472
    * getAlignHolizonalType
473
    * 水平方向のAlignの設定
474
    * @param string $type
475
    * @author hagiwara
476
    */
477
    private function getAlignHolizonalType($type)
478
    {
479
        $type_list = self::$__alignHolizonalType;
480
        if (array_key_exists($type, $type_list)) {
481
            return $type_list[$type];
482
        }
483
        return PHPExcel_Style_Alignment::HORIZONTAL_GENERAL;
484
    }
485
486
    /**
487
    * getAlignVerticalType
488
    * 垂直方向のAlignの設定
489
    * @param string $type
490
    * @author hagiwara
491
    */
492
    private function getAlignVerticalType($type)
493
    {
494
        $type_list = self::$__alignVerticalType;
495
        if (array_key_exists($type, $type_list)) {
496
            return $type_list[$type];
497
        }
498
        return null;
499
    }
500
501
    /**
502
    * getFillType
503
    * 塗りつぶしの設定
504
    * @param string $type
505
    * @author hagiwara
506
    */
507
    private function getFillType($type)
508
    {
509
        $type_list = self::$__fillType;
510
        if (array_key_exists($type, $type_list)) {
511
            return $type_list[$type];
512
        }
513
        return PHPExcel_Style_Fill::FILL_SOLID;
514
    }
515
516
    /**
517
    * createSheet
518
    * シートの作成
519
    * @param string $name
520
    * @author hagiwara
521
    */
522
    public function createSheet($name = null)
523
    {
524
        //シートの新規作成
525
        $newSheet = $this->__phpexcel->createSheet();
526
        $sheetNo = $this->__phpexcel->getIndex($newSheet);
527
        $this->__sheet[$sheetNo] = $newSheet;
528
        if (!is_null($name)) {
529
            $this->renameSheet($sheetNo, $name);
530
        }
531
    }
532
533
    /**
534
    * deleteSheet
535
    * シートの削除
536
    * @param integer $sheetNo
537
    * @author hagiwara
538
    */
539
    public function deleteSheet($sheetNo)
540
    {
541
        //シートの削除は一番最後に行う
542
        $this->__deleteSheetList[] = $sheetNo;
543
    }
544
545
    /**
546
    * copySheet
547
    * シートのコピー
548
    * @param integer $sheetNo
549
    * @param integer $position
550
    * @param string $name
551
    * @author hagiwara
552
    */
553
    public function copySheet($sheetNo, $position = null, $name = null)
554
    {
555
        $base = $this->getSheet($sheetNo)->copy();
556
        if ($name === null) {
557
            $name = uniqid();
558
        }
559
        $base->setTitle($name);
560
561
        // $positionが null(省略時含む)の場合は最後尾に追加される
562
        $this->__phpexcel->addSheet($base, $position);
563
    }
564
565
    /**
566
    * renameSheet
567
    * シート名の変更
568
    * @param integer $sheetNo
569
    * @param string $name
570
    * @author hagiwara
571
    */
572
    public function renameSheet($sheetNo, $name)
573
    {
574
        $this->__sheet[$sheetNo]->setTitle($name);
575
    }
576
577
    /**
578
    * write
579
    * xlsxファイルの書き込み
580
    * @param string $file 書き込み先のファイルパス
581
    * @author hagiwara
582
    */
583
    public function write($file, $type = 'Excel2007')
584
    {
585
        //書き込み前に削除シートを削除する
586
        foreach ($this->__deleteSheetList as $deleteSheet) {
587
            $this->__phpexcel->removeSheetByIndex($deleteSheet);
588
        }
589
        $writer = PHPExcel_IOFactory::createWriter($this->__phpexcel, $type);
590
        $writer->save($file);
591
    }
592
593
    /**
594
    * getReader
595
    * readerを返す(※直接PHPExcelの関数を実行できるように)
596
    * @author hagiwara
597
    */
598
    public function getReader()
599
    {
600
        return $this->__phpexcel;
601
    }
602
603
    /**
604
    * getSheet
605
    * シート情報の読み込み
606
    * @param integer $sheetNo シート番号
607
    * @author hagiwara
608
    * @return null|\PHPExcel_Worksheet
609
    */
610
    private function getSheet($sheetNo)
611
    {
612
        if (!array_key_exists($sheetNo, $this->__sheet)) {
613
            $this->__sheet[$sheetNo] = $this->__phpexcel->setActiveSheetIndex(0);
614
        }
615
        return $this->__sheet[$sheetNo];
616
    }
617
618
    /**
619
    * cellInfo
620
    * R1C1参照をA1参照に変換して返す
621
    * @param integer $col 行
622
    * @param integer $row 列
623
    * @author hagiwara
624
    */
625
    private function cellInfo($col, $row)
626
    {
627
        $stringCol = PHPExcel_Cell::stringFromColumnIndex($col);
628
        return $stringCol . $row;
629
    }
630
631
    /**
632
    * cellInfo
633
    * http://qiita.com/Hiraku/items/036080976884fad1e450
634
    * @param string $str
635
    */
636
    private function camelize($str)
637
    {
638
        $str = ucwords($str, '_');
639
        return str_replace('_', '', $str);
640
    }
641
}
642