Laravel-excel: Laravel 4.2/Laravel-Excel 1.3: ν…μŠ€νŠΈ ν˜•μ‹μ˜ μˆ«μžκ°€ μ—¬μ „νžˆ 숫자둜 ν‘œμ‹œλ¨

에 λ§Œλ“  2015λ…„ 12μ›” 03일  Β·  38μ½”λ©˜νŠΈ  Β·  좜처: Maatwebsite/Laravel-Excel

λ‚˜λŠ” λ©°μΉ  λ™μ•ˆ μ΄κ²ƒμœΌλ‘œ λ†€μ•˜μ§€λ§Œ λ‹¨μˆœνžˆ μž‘λ™ν•˜κ²Œ λ§Œλ“€ 수 μ—†μŠ΅λ‹ˆλ‹€. λ‚΄ λ°μ΄ν„°λ² μ΄μŠ€μ— κΈ΄ 숫자(16자리)κ°€ μ €μž₯λ˜μ–΄ μžˆλŠ”λ° toArray() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ xlsx Excel μŠ€ν”„λ ˆλ“œμ‹œνŠΈλ₯Ό λ§Œλ“­λ‹ˆλ‹€. μ—΄ ν˜•μ‹μ„ μ§€μ •ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” μ½”λ“œ:
$sheet->setColumnFormat(array( 'A' => '@' ));

κ·ΈλŸ¬λ‚˜ μˆ«μžλŠ” Excelμ—μ„œ 숫자둜 ν‘œμ‹œλ˜λ©° 과학적 ν‘œκΈ°λ²•μœΌλ‘œ λ‹¨μΆ•λ©λ‹ˆλ‹€.

μ–‘μͺ½μ— 곡백을 μΆ”κ°€ν•˜λŠ” 것 외에 이 λ¬Έμ œμ— λŒ€ν•΄ ν•  수 μžˆλŠ” 일이 μžˆμŠ΅λ‹ˆκΉŒ?

λ‚˜λŠ” Excel의 15자리 μ œν•œμ„ μ•Œκ³  μžˆμ§€λ§Œ ν…μŠ€νŠΈλ‘œ μ„œμ‹μ„ 지정할 λ•Œ 이것이 λ¬Έμ œκ°€ λ˜μ§€ μ•Šμ„ 것이라고 믿게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

$excel->sheet('staff', ν•¨μˆ˜($sheet) μ‚¬μš©($data) {
$sheet->setColumnFormat(λ°°μ—΄(
'ν•˜' => '@',
));
$sheet->rows($data,true);
});

도움이 λ˜μ—ˆκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€ ;)

λͺ¨λ“  38 λŒ“κΈ€

μ—¬κΈ°μ—μ„œλ„ 같은 λ¬Έμ œμ΄μ§€λ§Œ 제 κ²½μš°μ—λŠ” 14자리 λ¬Έμžμ—΄μž…λ‹ˆλ‹€.

Excelμ—μ„œ κΈ΄ μˆ«μžμ— λŒ€ν•œ 과학적 ν‘œκΈ°λ²•μ„ ν”Όν•˜λ €λ©΄ ν•΄λ‹Ή 값을 숫자둜 λͺ…μ‹œμ μœΌλ‘œ ν‘œμ‹œν•˜λŠ” ν˜•μ‹ 마슀크λ₯Ό μ„€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€..... @ λ₯Ό μ‚¬μš©ν•˜λŠ” 것은 λ‹¨μˆœνžˆ κΈ°λ³Έ λ™μž‘μ„ μ‚¬μš©ν•˜λ„λ‘ MS Excel에 μ§€μ‹œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. (이것은 더 κΈ΄ μˆ«μžμ— λŒ€ν•΄ 과학적 ν˜•μ‹μ„ μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€).... λŒ€μ‹  #0 의 ν˜•μ‹ 마슀크λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

κ·Έλ•Œλ„ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것은 λ‚΄κ°€ μ‹œλ„ν•œ κ²ƒμž…λ‹ˆλ‹€ : $sheet->setColumnFormat(['id'=> '#0']);. λ‚˜λŠ” λ˜ν•œ μ—¬λŸ¬ ν˜•μ‹μ„ μ‹œλ„ν–ˆμ§€λ§Œ μ‹€μ œλ‘œ μ—΄ ν˜•μ‹μ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— setColumnFormat이 CSV와 잘 μž‘λ™ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

이것이 차이λ₯Ό λ§Œλ“œλŠ”μ§€ λͺ¨λ₯΄κ² μ§€λ§Œ μ €λŠ” $sheet->fromModel($result); $sheet->fromArray($result->toArray()) μ‹œλ„ν–ˆλŠ”λ° λ‘˜ λ‹€ 이 λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

CSV에 이 λ¬Έμ œκ°€ μžˆλŠ” μ‚¬λžŒλ“€μ„ μœ„ν•΄ λ‹€μŒ 방법을 λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

곡개 ν•¨μˆ˜ getStringIdAttribute()
{
return '="' . $this->id . '"';
}
λ‚΄ λͺ¨λΈ 상단에 λ‹€μŒμ„ μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
보호된 $appends = ['string_id'];

그리고 κ·Έ μˆ«μžκ°€ Excel(Kingsoft μŠ€ν”„λ ˆλ“œμ‹œνŠΈ 뿐만 μ•„λ‹ˆλΌ)에 ν…μŠ€νŠΈλ‘œ ν‘œμ‹œλ˜λ„λ‘ ν–ˆμŠ΅λ‹ˆλ‹€.

CSV둜 μž‘μ„±ν•˜κ³  Excel을 톡해 λ³΄λŠ” 경우 CSVλŠ” ν˜•μ‹ 마슀크λ₯Ό μ €μž₯ν•˜μ§€ μ•ŠμœΌλ©° Excel은 κΈ°λ³Έ ν˜•μ‹(더 큰 κ°’μ˜ 경우 과학적)을 μ‚¬μš©ν•˜μ—¬ κ²°κ³Όλ₯Ό 숫자둜 ν‘œμ‹œν•©λ‹ˆλ‹€.....항상 λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ CSVλ₯Ό ν™•μΈν•©λ‹ˆλ‹€. ν…μŠ€νŠΈ νŽΈμ§‘κΈ°

μ—΄ ν˜•μ‹μœΌλ‘œ "#0"을 μ‚¬μš©ν•˜μ—¬ νŒŒμΌμ„ 내보내렀고 μ‹œλ„ν–ˆμ§€λ§Œ λ§ˆμ§€λ§‰ μˆ«μžκ°€ 0으둜 λ³€ν™˜λ©λ‹ˆλ‹€. @κ°€ 'κΈ°λ³Έκ°’'의 μ‹λ³„μžμΈ 경우 Excel이 아무 것도 κ±΄λ“œλ¦¬μ§€ μ•Šλ„λ‘ 셀을 ν…μŠ€νŠΈλ‘œ λ‚˜μ—΄ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? ?

ν˜„μž¬ λ‚΄ ν•΄κ²° 방법은 laravel-excelμ—μ„œ csv둜 내보내고 있으며 openpyxl이 ν…μŠ€νŠΈλ‘œ μ˜¬λ°”λ₯΄κ²Œ ν˜•μ‹μ„ 지정할 수 μžˆλŠ” κ²ƒμ²˜λŸΌ xlsx둜 내보내기 μœ„ν•΄ μž‘μ„±ν•œ Python 슀크립트λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

이 λ™μž‘μ— λŒ€ν•œ μˆ˜μ • 사항이 μžˆμŠ΅λ‹ˆκΉŒ? Excelμ—μ„œ 숫자 "10"으둜 λ‚΄λ³΄λ‚΄λŠ” "10E00"κ³Ό 같은 λ¬Έμžμ—΄μ΄ μžˆλŠ” λ°°μ—΄μ—μ„œ XSLX둜 내보내고 μžˆμŠ΅λ‹ˆλ‹€. setColumnFormat "@"κ°€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€...

@lachyn μœ„μ—μ„œ λ§ν–ˆλ“―μ΄ λ‚΄κ°€ μ‚¬μš©ν•œ ν•΄κ²° 방법은 from laravel CSV둜 내보낸 λ‹€μŒ μ…Έ λͺ…령을 μ‹€ν–‰ν•˜μ—¬ 좜λ ₯을 python 슀크립트둜 xlsx둜 λ³€ν™˜ν•˜λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€.

@lszanto ν•˜μ§€λ§Œ 이것은 μ΄μƒν•©λ‹ˆλ‹€. "CSV"둜 내보내더라도 "10E00" λŒ€μ‹  "10" 값이 있고 λ‚΄ 배열에 λ¬Έμžμ—΄ "10E00"이 μžˆλ‹€κ³  ν™•μ‹ ν•©λ‹ˆλ‹€....

@lachyn CSVλ₯Ό μ—¬λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? 그것이 단지 ν…μŠ€νŠΈ νŽΈμ§‘κΈ°λΌλ©΄ CSVκ°€ μˆ˜μ •μž λ˜λŠ” 아무것도 μ—†λŠ” μ›μ‹œ 좜λ ₯이어야 ν•˜λ―€λ‘œ laravel이 λ‹€λ₯Έ 것을 λ§Œμ§€κ³  μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” 데이터가 λΉ„κ³΅κ°œκ°€ μ•„λ‹Œ 경우 μƒ˜ν”Œμ„ κ²Œμ‹œν•  수 있으며 κΈ°νšŒκ°€ μžˆμ„ λ•Œ μ‹œλ„ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

@lszanto μˆ­κ³ ν•œ ν…μŠ€νŠΈ νŽΈμ§‘κΈ°...
λ§ˆμ§€λ§‰μ— toArray()둜 쿼리λ₯Ό μˆ˜ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 배열을 λ€ν”„ν•˜λ©΄ "10E00"으둜 내보내기 ν›„... "10"이 λ©λ‹ˆλ‹€. λ‚΄λ³΄λ‚΄κΈ°λŠ” 이 λ°°μ—΄μ—μ„œ μ΄λ£¨μ–΄μ§€λ―€λ‘œ λͺ¨λ“  mutatorsλŠ” μΏΌλ¦¬μ—μ„œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.... λ”°λΌμ„œ 내보내기 쀑에 λ³€κ²½ν•΄μ•Ό ν•©λ‹ˆλ‹€.

@lszanto μ•„λ§ˆ 이 문제의 원인을 μ°Ύμ•˜μ„ κ²ƒμž…λ‹ˆλ‹€. λ‚΄ λ‚΄λ³΄λ‚΄κΈ°μ—μ„œ 헀더 행을 μ œκ±°ν•˜λŠ” 경우

  $sheet->prependRow(..)

이제 μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.... κ·Έλž˜μ„œ μ•„λ§ˆλ„ 이 κΈ°λŠ₯은 ν˜•μ‹μ„ 깨뜨릴 κ²ƒμž…λ‹ˆλ‹€. λͺ¨λΈ λ˜λŠ” λ°°μ—΄μ—μ„œ μ‹œνŠΈ 생성을 μ‹œλ„ν–ˆμ§€λ§Œ λ™μΌν•œ κ²°κ³Όλ₯Ό μ–»μ—ˆμŠ΅λ‹ˆλ‹€.

Excel::create('sklad_vyrobku-'.date('d-m-Y', time()), function($excel) use ($table) {
            $excel->sheet('Sklad vyrobku k '.date('d-m-Y', time()), function($sheet) use ($table) {                                         
                 $sheet->fromModel($table, null, 'A1', false, false);
                     $sheet->prependRow(array('id','kod','...'));
                 $sheet->setColumnFormat(array('B'=>'@','C'=>'@','D'=>'@','E'=>'@'));
            });
         })->download('xlsx');

같은 문제(Laravel 4.2)κ°€ μžˆμ—ˆμ§€λ§Œ $excel->sheet ν•¨μˆ˜ ν΄λ‘œμ €λ₯Ό μ—° 직후 setColumnFormat 을 ν˜ΈμΆœν•˜μ—¬ ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
κ·Έλž˜μ„œ μ €λŠ” 이것이 버그라고 μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 단지 논리적인 μ ‘κ·Ό 방식일 λΏμž…λ‹ˆλ‹€.

μ˜ˆμ‹œ:

$excel->sheet("FooBar", function($sheet) use ($x, $y, $z) {

    $sheet->setColumnFormat(array(
       "G:H" => "@",
       "Z" => "@",
       'AH:AI' => '0',
       "AO:BB" => "h:mm",
       "BE:BR" => "h:mm",
    ));

    ...

});

λ‚˜λŠ” μ—¬μ „νžˆμ΄ λ¬Έμ œκ°€ μžˆμ—ˆκ³  μœ„μ˜ μ†”λ£¨μ…˜ 쀑 μ–΄λŠ 것도 λ‚˜λ₯Ό μœ„ν•΄ μΌν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λ°°μ—΄μ—μ„œ λ‚΄ 데이터λ₯Ό κ°€μ Έμ˜€κ³  μžˆμ—ˆκ³  거기에 μžˆλŠ” λͺ¨λ“  값이 strings μ˜€μ§€λ§Œ setColumnFormat κ°€ μ—¬μ „νžˆ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  셀을 Number Format 둜 λ³€ν™˜ν•  것이라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 그렇지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
λ‚΄κ°€ ν•΄κ²°ν•œ 방법은 fromArray λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό μ‹œνŠΈλ‘œ κ°€μ Έμ˜€κΈ° 전에 λ‚΄ λ°°μ—΄μ˜ λͺ¨λ“  값을 float/int둜 μœ ν˜• λ³€ν™˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ”°λΌμ„œ 아무 것도 μž‘λ™ν•˜μ§€ μ•ŠμœΌλ©΄ μ‹œνŠΈμ— μ‚½μž…ν•˜κΈ° 전에 κ°€μ Έμ˜€λŠ” 데이터가 μ˜¬λ°”λ₯Έ μœ ν˜•μΈμ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€. 이것이 λˆ„κ΅°κ°€λ₯Ό 돕기λ₯Ό λ°”λžλ‹ˆλ‹€ :)

setCellValueExplicit() 을 μ‚¬μš©ν•˜μ—¬ ν•΄κ²° 방법을 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€.
예:

$sheet->setColumnFormat(array( //se formatea la columna a texto
    'C' => \PHPExcel_Style_NumberFormat::FORMAT_TEXT,
    'I' => 'dd-mm-yyyy hh:mm'
));

$sheet->setCellValueExplicit('C10', $object->card_number, \PHPExcel_Cell_DataType::TYPE_STRING);

도움이 λ˜μ—ˆκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€ ;)

$excel->sheet('staff', ν•¨μˆ˜($sheet) μ‚¬μš©($data) {
$sheet->setColumnFormat(λ°°μ—΄(
'ν•˜' => '@',
));
$sheet->rows($data,true);
});

도움이 λ˜μ—ˆκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€ ;)

μ—¬μ „νžˆ 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ ν˜•μ‹(κΈ€κΌ΄)은 λ³€κ²½λ˜μ§€λ§Œ 데이터 ν˜•μ‹μ€ λ³€κ²½λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
captura de pantalla 2017-04-04 a las 11 11 39 a m
captura de pantalla 2017-04-04 a las 11 05 19 a m
captura de pantalla 2017-04-04 a las 11 12 58 a m

λ²„κ·Έμž…λ‹ˆκΉŒ μ•„λ‹ˆλ©΄ μ œκ°€ 잘λͺ»ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

@minkadev
$sheet->rows($data, true) λŠ” λͺ¨λ“  κ·œμΉ™μ„ "λͺ…μ‹œμ "으둜 μΆ”κ°€ν•©λ‹ˆλ‹€. 즉, λ¬Έμžμ—΄λ‘œ μΆ”κ°€λ˜λ―€λ‘œ μ—΄ ν˜•μ‹μ΄ λ¬΄μ‹œλ©λ‹ˆλ‹€.

@patrickbrowers κ°μ‚¬ν•©λ‹ˆλ‹€.
λ‚˜λŠ” λ˜ν•œ λ‹€μŒκ³Ό 같이 μ‹œλ„ν•©λ‹ˆλ‹€.

$sheet->fromArray($data, null, 'A1', false, false);

그것이 μž‘λ™ν•˜μ§€ μ•ŠλŠ” 이유λ₯Ό μ°Ύμ•˜μŠ΅λ‹ˆλ‹€. μ™œ μΆ”κ°€λ˜μ—ˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. https://github.com/Maatwebsite/Laravel-Excel/blob/2.1/src/Maatwebsite/Excel/Classes/LaravelExcelWorksheet.php#L1262 It 숫자 및 μ •μˆ˜λ„ "λ¬Έμžμ—΄" κ°’μœΌλ‘œ μΆ”κ°€ν•©λ‹ˆλ‹€.

κ·Έλž˜μ„œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€? :(

λͺ…μ‹œμ μΈ $sheet->rows($data, true); λ₯Ό true둜 μ„€μ •ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€.

μ‚¬μš©ν•˜λ‹€:

$sheet->rows($data);

$sheet->fromArray($data, null, 'A1', false, false); λ‚˜μ—κ²Œλ„ 잘 μž‘λ™ν•©λ‹ˆλ‹€.

κ·Έλž˜λ„ μž‘λ™μ΄ μ•ˆλ˜λŠ”. λ˜ν•œ λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ μ—΄ ν˜•μ‹μ„ μ§€μ •ν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
$sheet->fromArray($data, null, 'A1', false, false);

$sheet->rows($data); κ°€ ν¬ν•¨λœ 예제 μ½”λ“œλŠ” 잘 μž‘λ™ν•©λ‹ˆλ‹€. Excelμ—μ„œ μ—΄ λ•Œ μ—΄ μ„œμ‹μ΄ μ •ν™•ν•©λ‹ˆλ‹€.

이상 ν•˜λ„€. κ·Έλž˜λ„ μž‘λ™μ΄ μ•ˆλ˜λŠ”:
captura de pantalla 2017-04-05 a las 11 15 20 a m
captura de pantalla 2017-04-05 a las 11 13 48 a m
μ˜¬λ°”λ₯Έ 버전이 μžˆμŠ΅λ‹ˆκΉŒ? (v2.1.16)

λˆ„κ΅¬?.. 아직도이 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€ ...

Laravel 5.3, maatwebsite/excel 2.1.12

λ‹€μŒ 두 가지 λ³€κ²½ μ‚¬ν•­μœΌλ‘œ μž‘λ™ν•˜λ„λ‘ ν•  μˆ˜μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

  1. @LastxTemplar 숫자λ₯Ό float λ˜λŠ” int둜 μΊμŠ€νŒ…ν•˜λŠ” μ œμ•ˆ
  2. @nikola-absolute에 따라 $excel->sheet ν•¨μˆ˜ ν΄λ‘œμ €λ₯Ό μ—° 직후 setColumnFormat() 배치

μ΅œκ·Όμ—μ΄ λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. setColumnFormat 방법을 μ‚¬μš©ν•˜λ €κ³  ν•˜μ§€λ§Œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
이것이 λ‚΄ ν•΄κ²° λ°©λ²•μž…λ‹ˆλ‹€.

foreach (...) {
    $sheet->row($row, [
        /* Your Data */
    ]);
    $sheet->setCellValueExplicitByColumnAndRow($column, $row, $value, \PHPExcel_Cell_DataType::TYPE_STRING);
}

$column 및 $row 의 λ©”λͺ¨ μœ ν˜•μ€ integer 이며 μ—¬κΈ°λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€ .

Laravel 5.1, maatwebsite/excel 2.1.0
숫자λ₯Ό float λ˜λŠ” int둜 μΊμŠ€νŒ…ν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œ μž‘λ™ν•˜κ²Œ λ§Œλ“€ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
:(
κ·Έλž˜μ„œ λ‚˜λŠ” 그것을 λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ λͺ¨λ“  행에 λŒ€ν•΄ λ°˜λ³΅ν•΄μ•Όν•©λ‹ˆλ‹€.

λ˜ν•œμ΄ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. μ—…λ°μ΄νŠΈκ°€ μ˜ˆμ •λ˜μ–΄ μžˆμŠ΅λ‹ˆκΉŒ?

νŽΈμ§‘ : @neighborhood999의 ν•΄κ²° λ°©λ²•μœΌλ‘œλ„ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

여기에 μžˆλŠ” λͺ¨λ“  μƒ˜ν”Œμ€ Excel둜 내보내기에 λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.Excel μƒ˜ν”Œμ—μ„œ κ°€μ Έμ˜€κΈ°λŠ” μ–΄λ–»μŠ΅λ‹ˆκΉŒ

κ°’->imei_1 = 356803081142590;

ν•˜μ§€λ§Œ κ²°κ΅­ imei_1을 "3.5680308104231E+14"둜 μ–»μŠ΅λ‹ˆλ‹€.

<?php

$path = $request->file('excel')->getRealPath();
$data = Excel::load($path, function ($reader) {
})->get(['brand', 'model', 'batch', 'imei_1', 'imei_2']);

if (!empty($data) && $total = $data->count()) {
    foreach ($data as $key => $value) {
              $insert[] = ['brand' => $value->brand,
                           'model' => $value->model,
                           'batch' => $request->batch ? $request->batch : $value->batch,
                           'imei_1' => strval($value->imei_1),
                           'imei_2' => strval($value->imei_2),
                           'created_at' => Carbon::now(),
                           'updated_at' => Carbon::now()
                         ];
        }
    /*if (!empty($insert)) {
        Device::insert($insert);
        // dd('Insert Record successfully.');
    }*/
}

@ Ra1da35ma 같은 λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. μ΄κ²ƒμœΌλ‘œ 아무 λ°λ‚˜ μ–»μ—ˆμŠ΅λ‹ˆκΉŒ?

μ‚¬μš©μž 지정 κ°’ 바인더λ₯Ό μ„€μ •ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ 셀에 λ°”μΈλ”©λ˜λŠ” 값이 이미 과학적 ν‘œκΈ°λ²•μœΌλ‘œ λ˜μ–΄ 있기 λ•Œλ¬Έμ— μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ—„λ°€νžˆ 같은 λ¬Έμ œκ°€ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— 이것을 μ‹œλ„ν•˜κ³  ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ‹€λ₯Έ 문제λ₯Ό μ—΄ β€‹β€‹μˆ˜ μžˆμ§€λ§Œ 더 λ§Žμ€ 정보가 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

ν•΄κ²° 방법을 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€. λ¬Έμ œλŠ” PHP와 PHPExcel_Calculation ν΄λž˜μŠ€κ°€ μ½λŠ” 정밀도 .ini λ³€μˆ˜μ™€ 관련이 μžˆμŠ΅λ‹ˆλ‹€. Laravel-Excel νŒ¨ν‚€μ§€λ‚˜ μƒμœ„ νŒ¨ν‚€μ§€μΈ PHPExcelμ—μ„œ 이λ₯Ό μž¬μ •μ˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€. λŒ€μ‹  이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ Excel λ‘œλ“œ κΈ°λŠ₯을 ν˜ΈμΆœν•˜κΈ° 전에 ini_set('precision', 20) λ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

이것은 λ‚΄ κΈ°λŠ₯μž…λ‹ˆλ‹€.

public function getXlsxFile($filePath)
    {
        ini_set('precision', 18);
        $collection = Excel::load($filePath);

        return $collection->get();
    }

이것이 laravel 5.1μ—μ„œ μž‘λ™ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

$myFile= Excel::create($filename, function($excel) use($array) {
$excel->setTitle('제λͺ©');
$excel->sheet('μ‹œνŠΈ 1', function($sheet) use($array) {
$sheet->setColumnFormat(array('B'=>'0'));
$sheet->setColumnFormat(array('C'=>'0'));
$sheet->setColumnFormat(array('D'=>'0'));
$sheet->setColumnFormat(array('E'=>'0'));
$sheet->rows($array,false);
//컬럼 이름 μ„€μ •
$sheet->prependRow(λ°°μ—΄(
'μ—΄ 이름 1', 'μƒμž 1', 'μƒμž 2', 'μƒμž 3', '총계'
));
});
});

버전 2.*κ°€ 단쒅 단계에 λ„λ‹¬ν–ˆκΈ° λ•Œλ¬Έμ— λͺ¨λ“  κΈ°μ‘΄ 티켓을 λ‹«μŠ΅λ‹ˆλ‹€. 우리의 λͺ¨λ“  관심은 이제 버전 3.0에 ν• λ‹Ήλ©λ‹ˆλ‹€. μ—¬μ „νžˆ 2.*λ₯Ό μ‚¬μš©ν•  수 μžˆμ§€λ§Œ 더 이상 ν™œμ„± 지원이 μ—†μŠ΅λ‹ˆλ‹€.

값을 μ •μˆ˜λ‘œ μΊμŠ€νŒ…ν•˜λŠ” 것이 μ €μ—κ²Œ νš¨κ³Όμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

이것이 μ΅œμ„ μ˜ λ‹΅λ³€μž…λ‹ˆλ‹€. λ³€μˆ˜λ₯Ό ->fromArray λ©”μ†Œλ“œμ— μ „λ‹¬ν•˜κΈ° 전에 배열에 캐슀트λ₯Ό μž…λ ₯ν•˜μ‹­μ‹œμ˜€. 예:
$local_order['Quantity'] = (int) $item->quantity;
$local_order['Price'] = (float) $item->price;

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰