【发布时间】:2020-04-05 14:14:52
【问题描述】:
我想将电子表格数据导入 sql 数据库, 这是我的电子表格,
这是我的视图和控制器,
<?php
namespace App\Http\Controllers;
use App\DailyAttendance;
use Illuminate\Http\Request;
use App\Exports\DailyAttendanceExport;
use App\Imports\DailyAttendanceImport;
use Maatwebsite\Excel\Facades\Excel;
class DailyAttendanceController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$dailyAttendance = DailyAttendance::all();
return view('daily_attendance.index')->with('dailyAttendance', $dailyAttendance);
}
/**
* Import function
*/
public function import(Request $request)
{
if ($request->file('imported_file')) {
$import = new DailyAttendanceImport();
$import->onlySheets('Logs');
Excel::import($import, request()->file('imported_file'));
return back();
}
}
<form id="upload_excel" method="post" enctype="multipart/form-data" action="{{ route('dailyAttendance.import') }}" autocomplete="off">
@csrf
@method('post')
<input type="file" name="imported_file" required>
<button style="margin-left: 10px;" class="btn btn-info" type="submit">Upload attendance</button>
</form>
这也是我的模型类,
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class DailyAttendance extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'emp_id', 'date','start','end',
];
}
我还创建了导入类,
<?php
namespace App\Imports;
use App\DailyAttendance;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class DailyAttendanceImport implements ToModel, WithHeadingRow
{
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
//
}
}
// change this to import data to an array instead of db...........
但根据文档,laravel excel documentation 工作表值只能作为行导入,例如
return new DailyAttendance([
'emp_id' => $row['emp_id'],
'date' => $row['date'],
'start' => $row['start'],
'end' => $row['end'],
]);
由于我的 excel 表格格式,我想通过单元格地址捕获值,谁能告诉我如何将单元格值导入模型,谢谢!
【问题讨论】:
-
继续浏览文档,你会遇到heading row
-
不,我看到了,我想访问单元格值而不是整行或整列
-
是的,像 A1,B2...
-
我不认为这个包允许开箱即用的东西。如果您需要一个多维数组,或者一个包含所有值的一维数组,您将需要预处理整个页面并生成这样的数组。我建议从您提供的链接中的“导入到数组或集合”开始。
-
好的,我试试,谢谢
标签: php html laravel maatwebsite-excel laravel-excel