laravel - Laravel Excel 导入中是否有限制行功能?
问题描述
我正在使用 maatwebsite/excel 包导入 CSV 文件。我无法限制导入的行。就像我需要上传文件中的前“n”行一样。我看到了一个界面
WithLimit
但是当我将它与 Limit() 一起使用时。它会引发一些错误,例如我尝试插入的某些表值是空的。我认为它正在使用列的限制。是否有任何解决方法来解决问题?
我的控制器
class FinancialTransController extends Controller
{
public function store(Request $request)
{
Excel::import(new FinancialTrans, request()->file('myfile'));
return 'success';
}
}
这是我的导入类
class FinancialTrans implements ToModel,WithHeadingRow
{
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
return new FinancialTran([
'module_id' =>$row['sr'],
'tran_id'=>$row['sr'],
'amount'=>$row['sr'],
'crdr'=>$row['sr'],
'tran_date'=>$row['date'],
'acad_year'=>$row['academic_year'],
'entry_mode'=>$row['sr'],
'voucher_number'=>$row['voucher_no'],
'br_id'=>$row['sr'],
]);
}
public function headingRow(): int
{
return 6;
}
}
解决方案
WithHeadingRow 加载所有先前的行。改用接口 WithStartRow。
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithStartRow;
use Maatwebsite\Excel\Concerns\WithLimit;
class FinancialTrans implements ToModel, WithLimit, WithStartRow
{
protected $startRow;
public function __construct(int $startRow)
{
$this->startRow = $startRow;
}
...
public function startRow(): int
{
return $this->startRow;
}
public function limit(): int
{
return 10;
}
推荐阅读
- linux - 如何使用 crontab 运行 SVN 命令
- keras - 将 Keras 多个 input_shape 转换为 TensorFlow Lite
- c# - 组数据表父子
- r - CheckboxInput 与 DT R Shiny 中的编辑表
- raspberry-pi - 在树莓派 2 上设置时出现 Nextcloud 错误
- php - 我不知道如何将日期从 js 视图发送到 laravel 服务器
- python - 如何将 pandas groupby() 对象存储在具有不同索引的同一变量中
- reactjs - 我们如何根据条件禁用 antd table 的复选框?
- java - 关闭应用程序时服务不执行,但在后台执行时会执行
- swift - 关闭屏幕后列表未更新