7.0から7.1にPHPのバージョンをアップグレードすると問題が発生しました。 PHPExcel Laravelを使用してxlsファイルを作成/エクスポートしています。PHPExcelで正しくない数値が発生しましたLaravel
エラーメッセージは、「整形されていない数値が発生しました」です。 しかし、タイプをxlsからxlsxに変更しても、うまく動作していますが、フォーマットは正しくありません。 問題は私がPHP版をアップグレードしたためだと思います。
既にコードを変更しようとしますが、変更はすべて同じです。 誰でも手伝いできますか?
MyControllerは、次のようになります。
public function exportPo(Request $request)
{
try{
if($request->getMethod() == 'POST'){
$input = $request->all();
$validator = Validator::make($input, [
'start_date' => 'required|date',
'end_date' => 'required|date',
]);
if ($validator->fails()) {
return redirect(route('export-po'))
->withErrors($validator)
->withInput();
}
$postData = [];
$postData['search_term']['date'] = [
'start_date'=> $input['start_date'],
'end_date'=> $input['end_date']
];
if(count($postData) > 0){
//Export the excel file here
$poList = EprocModel::getPostData('/listPurchaseOrder', $postData);
$poListArr = json_decode($poList, true);
if(isset($poListArr['data'])){
$row = [];
foreach($poListArr['data'] as $data){
switch($data['status_po']){
case 0:
$status = 'Baru';
break;
case 2:
$status = "Reject";
break;
case 3:
$status = "Cancel";
break;
case 1:
if(
$data['status_shipping'] == 0 &&
$data['status_payment_buyer'] == 0 &&
$data['status_payment_seller'] == 0
){
$status = "Processing";
}
if(
$data['status_shipping'] == 1 &&
$data['status_payment_buyer'] == 0 &&
$data['status_payment_seller'] == 0
){
$status = "Shipping";
}
if(
$data['status_shipping'] == 2 &&
$data['status_payment_buyer'] == 0 &&
$data['status_payment_seller'] == 0
){
$status = "Shipping";
}
if(
$data['status_shipping'] == 2 &&
$data['status_payment_buyer'] == 1 &&
$data['status_payment_seller'] == 1
){
$status = "Closed";
}
break;
default:
$status = "unknown";
break;
}
$row[] = [
'PO. No'=> $data['po_number'],
'PR. No'=> $data['pr_number'],
'Type (Direct/Indirect)'=> ($data['company_type'] == 1 ? "Direct" : "Indirect"),
'Requestor/Customer'=> $data['buyer_name'],
'Fulfillment'=> $data['seller_name'],
'Status'=>$status,
'Catatan Pembelian'=> $data['notes']
];
}
Excel::create('purchase_order', function($excel) use ($row){
$excel->sheet('purchase order', function($sheet) use ($row) {
$sheet->fromArray($row, null, 'A1', true, true);
//Change background color for the first row to grey
$sheet->row(1, function($row) {
$row->setBackground('#cccccc');
});
});
})->export('xls');
}else{
\Session::flash('error', $poListArr['errors']['userMessage']);
}
}
}
Theme::asset()->serve('form');
return $this->theme->scope('finances.exportPo')->render();
}catch(\Exception $e){
return $e->getMessage();
}
}
マイセットアップ: Laravel 5.1 "maatwebsite /エクセル": "〜2.0"、 "phpoffice/phpword": "v0.13 *"、
これは実際にはパッケージ内のバグです。こちらをご覧ください:https://github.com/PHPOffice/PHPExcel/issues/1110 – David