Laravel-excel: [์งˆ๋ฌธ] ์…€ ๋ฒ”์œ„์— ๋ณดํ˜ธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

์— ๋งŒ๋“  2017๋…„ 09์›” 06์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Maatwebsite/Laravel-Excel

ํŒจํ‚ค์ง€ ๋ฒ„์ „, Laravel ๋ฒ„์ „

์ตœ์‹  ๋ฒ„์ „, ๋ผ๋ผ๋ฒจ 5.4

๋ฒ„๊ทธ์ธ์ง€, ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š”์ง€, ์•„๋‹ˆ๋ฉด ์•„์ง ํ•˜์ง€ ๋ชปํ•œ ์ผ์ด ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

Excel ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•ด maatwebsite์—์„œ ์ฐพ์€ ๊ธฐ๋ณธ ๋ฐ ๊ณ ๊ธ‰ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•์€
$sheet->protect() , ๊ณ ๊ธ‰ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์ „์ฒด ์‹œํŠธ๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์…€ ๋ฒ”์œ„๋งŒ ๋ณดํ˜ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์›Œํฌ ์‹œํŠธ ๋ฐฉ๋ฒ•์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
$sheet->protectCells(A1); ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๋„์™€์ฃผ์„ธ์š”. ๊ฐ์‚ฌ ํ•ด์š”..

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋“œ๋””์–ด ์ œ๋Œ€๋กœ ๋œ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜๋„ค์š”..

$objPHPExcel = ์ƒˆ๋กœ์šด PHPExcel;
$objSheet = $objPHPExcel->getActiveSheet();

//์„ธํฌ ๋ฒ”์œ„๋ฅผ ๋ณดํ˜ธ
$objSheet->protectCells('A1:B1', 'PHP');

// ์„ธํฌ ๋ฒ”์œ„๋ฅผ ๋ณดํ˜ธ ํ•ด์ œ
$objSheet->getStyle('A2:B2')->getProtection()
->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);

// ์›Œํฌ์‹œํŠธ ๋ณดํ˜ธ
$objSheet->getProtection()->setSheet(true);

์ด๊ฒƒ์€ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!
์ถœ์ฒ˜: https://stackoverflow.com/questions/17046207/phpexcel-lock-particular-cell

Laravel์—์„œ๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

// ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ณดํ˜ธ
$sheet->protect('๋น„๋ฐ€๋ฒˆํ˜ธ');

// ์…€ ๋ฒ”์œ„๋ฅผ ๋ณดํ˜ธ ํ•ด์ œ
$sheet->getStyle('F2:F1000')->getProtection()->setLocked(\PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);

// PROTECT ์›Œํฌ์‹œํŠธ ์‹œํŠธ
$sheet->getProtection()->setSheet(true);

๋ชจ๋“  3 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” @GreenWhiteDev

๋‹ค์Œ์—์„œ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๊ธฐ๋ณธ ์ข…์†์„ฑ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/PHPOffice/PHPExcel/search?utf8=%E2%9C%93&q=protectCells&type=

๊ฒฐ๊ณผ์— ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
https://github.com/PHPOffice/PHPExcel/blob/1c8c2379ccf5ab9dd7cb46be965821d22173bcf4/Examples/05featuredemo.inc.php#L136 -L139

์•„๋งˆ ๋‹น์‹ ์ด ์ƒ๊ฐํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ๊ฐ™์€:

$sheet->getActiveSheet()->getProtection()->setSheet(true);  // Needs to be set to true in order to enable any worksheet protection!
$sheet->getActiveSheet()->protectCells('A3:E13', 'PHPExcel');

ํŽธ์ง‘: ์ด ์ฐธ์กฐ ์ถ”๊ฐ€:
๋˜ํ•œ ์ฐธ์กฐ

https://github.com/PHPOffice/PHPExcel/blob/1c8c2379ccf5ab9dd7cb46be965821d22173bcf4/Classes/PHPExcel/Worksheet.php#L1793 -L1814

    /**
     * Set protection on a cell range
     *
     * <strong i="22">@param</strong>    string            $pRange                Cell (e.g. A1) or cell range (e.g. A1:E1)
     * <strong i="23">@param</strong>    string            $pPassword            Password to unlock the protection
     * <strong i="24">@param</strong>    boolean        $pAlreadyHashed    If the password has already been hashed, set this to true
     * <strong i="25">@throws</strong>    PHPExcel_Exception
     * <strong i="26">@return</strong> PHPExcel_Worksheet
     */
    public function protectCells($pRange = 'A1', $pPassword = '', $pAlreadyHashed = false)

๊ทธ ๋ฐฉ๋ฒ•์— ์‚ฌ์šฉํ•  ์„ธ ๊ฐ€์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜!

์–ด๋–ป๊ฒŒ ์ง€๋‚ด๋Š”์ง€ ์•Œ๋ ค์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋“œ๋””์–ด ์ œ๋Œ€๋กœ ๋œ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜๋„ค์š”..

$objPHPExcel = ์ƒˆ๋กœ์šด PHPExcel;
$objSheet = $objPHPExcel->getActiveSheet();

//์„ธํฌ ๋ฒ”์œ„๋ฅผ ๋ณดํ˜ธ
$objSheet->protectCells('A1:B1', 'PHP');

// ์„ธํฌ ๋ฒ”์œ„๋ฅผ ๋ณดํ˜ธ ํ•ด์ œ
$objSheet->getStyle('A2:B2')->getProtection()
->setLocked(PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);

// ์›Œํฌ์‹œํŠธ ๋ณดํ˜ธ
$objSheet->getProtection()->setSheet(true);

์ด๊ฒƒ์€ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!
์ถœ์ฒ˜: https://stackoverflow.com/questions/17046207/phpexcel-lock-particular-cell

Laravel์—์„œ๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

// ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ณดํ˜ธ
$sheet->protect('๋น„๋ฐ€๋ฒˆํ˜ธ');

// ์…€ ๋ฒ”์œ„๋ฅผ ๋ณดํ˜ธ ํ•ด์ œ
$sheet->getStyle('F2:F1000')->getProtection()->setLocked(\PHPExcel_Style_Protection::PROTECTION_UNPROTECTED);

// PROTECT ์›Œํฌ์‹œํŠธ ์‹œํŠธ
$sheet->getProtection()->setSheet(true);

@jorgeald77 ์™€์šฐ! ๋„ˆ๋ฌด ๋ฉ‹์ ธ์š”..

์ž ์‹œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฉฐ์น  ์ „์— ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋•Œ๋Š” ์…€ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๋ณด์•ˆ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์˜ ์†”๋ฃจ์…˜์„ ์‹œ๋„ํ–ˆ๊ณ  ๊ทธ๊ฒƒ์€ ๋„ˆ๋ฌด ๋ฉ‹์ง€๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์—ฌํ•ด ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค..

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰