导入:简单版
public function import(Request $request)
{
$filePath = "public" . $request->get("path");
try {
Excel::load($filePath, function ($reader) {
//获取excel的第几张表
$reader = $reader->getSheet(1);
//获取表中的数据
$data = $reader->toArray();
for ($row = 3; $row < count($data); $row++) {
$food = Food::where("name", $data[$row]['1'])->first();
if (!empty($food)) continue;
$list = new Food();
$list->type = $data[$row]['2'];
$list->code = $data[$row]['0'];
$list->name = $data[$row]['1'];
$list->norm = $data[$row]['6'];
$list->save();
}
});
return response()->json(["code" => CodeUtil::SUCCESS, 'msg' => "成功"]);
} catch (\Exception $e) {
return response()->json(["code" => CodeUtil::ERROR, 'msg' => "失败"]);
}
}
复杂版
注:下面的换了一个包,laravel官网的包导入时丢失小数(坑),转用tp框架的包,还蛮好用的
use PhpOffice\PhpSpreadsheet\IOFactory;
public function import(Request $request)
{
$now = Carbon::now()->toDateString();
$s = Sale::where("time", $now)->first();
if (!empty($s)) return response()->json(["code" => CodeUtil::ERROR, 'msg' => "今日数据已导过"]);
$filePath = public_path($request->get("path"));
$objReader = IOFactory::createReader('Xlsx');
$spreadsheet = $objReader->load($filePath); //载入excel表格
$reader = $spreadsheet->getSheet(0)->toArray();
$reader1 = $spreadsheet->getSheet(0);
$row_num = $reader1->getHighestRow(); // 总行数
$m = 0;//获取最后一列数
foreach ($reader[3] as $v) {
$m++;
}
try {
$list = new Sale();
$list->bill_num = $reader1->getCellByColumnAndRow($m, 5)->getValue();
$list->people_num = $reader1->getCellByColumnAndRow($m, 6)->getValue();
$list->run_price = $reader1->getCellByColumnAndRow($m, 7)->getValue();
$list->discount_price = $reader1->getCellByColumnAndRow($m, 9)->getValue();
$list->tip = $reader1->getCellByColumnAndRow($m, 10)->getValue();
$list->time = Carbon::now()->toDateString();//今天;
$list->save();
$n = 0;
for ($i = 11; $i <= $row_num; $i++) {
$name = $reader1->getCellByColumnAndRow(1, $i)->getValue();
if ($name == "优惠组成") {
$n = $i;
break;
}
}
for ($i = 11; $i < $n; $i++) {
$sale_income