在 PHPExcel 上遇到格式不正确的数值 Laravel
A non well formed numeric value encountered on PHPExcel Laravel
我在将 php 版本从 7.0 升级到 7.1 时遇到问题。
我正在使用 PHPExcel Laravel 到 create/export xls 文件。
错误信息是"A non well formed numeric value encountered"。
但是当我将类型从 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/excel": "~2.0",
"phpoffice/phpword": "v0.13.*",
这种情况通过检查每个 HTML 语法来解决。
例如,colspan/rowspan 和任何东西都必须对每一行都有标准。如果第一行需要使用 colspan 4 ,后面的行也必须是相同的值。
因此,每个 HTML 语法都没有什么不同。当将 export('xls') 更改为 export('xlsx') 时,现在看起来不错。
我在将 php 版本从 7.0 升级到 7.1 时遇到问题。 我正在使用 PHPExcel Laravel 到 create/export xls 文件。
错误信息是"A non well formed numeric value encountered"。 但是当我将类型从 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/excel": "~2.0", "phpoffice/phpword": "v0.13.*",
这种情况通过检查每个 HTML 语法来解决。 例如,colspan/rowspan 和任何东西都必须对每一行都有标准。如果第一行需要使用 colspan 4 ,后面的行也必须是相同的值。
因此,每个 HTML 语法都没有什么不同。当将 export('xls') 更改为 export('xlsx') 时,现在看起来不错。