我正在尝试将Laravel Excel(http://www.maatwebsite.nl/laravel-excel/docs)软件包安装到我的Laravel 5上.这是我到目前为止所做的:
"maatwebsite/excel": "2.*"到我的要求,composer update
完成就好了,我有所有的包文件'Maatwebsite\Excel\ExcelServiceProvider',到提供者数组'Excel' => 'Maatwebsite\Excel\Facades\Excel',到别名数组这是问题 - 当我尝试跑步时php artisan vendor:publish,它会告诉我Nothing to publish for tag [].
当我使用php artisan tinker并运行时$excel = App::make('excel'),它会告诉我ReflectionException with message 'Class excel does not exist'.
我究竟做错了什么?
我不知道我做错了什么,或者它可能是正常的.我必须加载并"读取"大约12000行的excell.我使用这个代码.
Excel::selectSheetsByIndex(0)->load($path.$fileName, function ($reader) {
$reader->each(function($row){
Log::info('$row');
});
});
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,没有什么可以使阅读变得如此缓慢.我需要在读取后处理数据,如果只读取超过5-10分钟就会出现问题.
我也尝试使用块过滤器,但没有什么比这更好了.
这是正常的吗?
我知道excel阅读速度很慢,正如我在其他问题中读到的那样,但"这个"很慢?谢谢.
我使用 maatwebsite excel 库来导入和导出数据。我想设置单元格数据,例如。
A B C D E F
1 heading1 heading2 heading3 heading4 heading5 heading6
2 data1 data2 data3 data4 data5 data6
3 data12 data22 data32 data42 data52 data62
4 data23 data33 data43 data53
5 data34 data44 data54
6 data35 data45 data54
7 data46 data56
8 data47 data57
9 data48
10 data49
11 data50
12 data51
Run Code Online (Sandbox Code Playgroud)
我想导出类似的数据,我尝试了很多但没有成功。
下面是我的代码。
$sheet->fromArray($dataHeading);
Run Code Online (Sandbox Code Playgroud)
我使用此功能为 Excel 文件添加值。但问题是这个函数增加了原始值,我想增加单元格值。
就像首先我增加价值然后A等等B......
我找不到任何可以让我为单元格增加价值的函数。
请帮助我如何处理这个问题。我有像 php 数组这样的数据。
array(
'heading1' => array(
'data1','data12'
),
'heading2' …Run Code Online (Sandbox Code Playgroud) 我.xls用Laravel Excel加载了文件:
Excel::load('public/files/20160621.xls', function($reader) {
// read a cell value
});
Run Code Online (Sandbox Code Playgroud)
如何读取加载的excel文件的单元格值?文档似乎不清楚.
我使用Laravel 5.2,我试图导入包含超过18000条记录的Excel工作表。下面的错误出现。本地主机页面不起作用
Run Code Online (Sandbox Code Playgroud)localhost is currently unable to handle this request. HTTP ERROR 500
我试图改变的php.ini max_execution_time从30秒到300秒,但什么也没有改变
我从这里得到教程:https : //laravel-excel.maatwebsite.nl/docs/3.0/export/basics
<?php
...
use App\Exports\ItemsDetailsExport;
class ItemController extends Controller
{
...
public function exportToExcel(ItemsDetailsExport $exporter, $id)
{
//dd($id); I get the result
return $exporter->download('Summary Detail.xlsx');
}
}
Run Code Online (Sandbox Code Playgroud)
我的出口是这样的:
<?php
namespace App\Exports;
use App\Repositories\Backend\ItemDetailRepository;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\Exportable;
use Illuminate\Support\Facades\Input;
class ItemsDetailsExport implements FromCollection
{
use Exportable;
protected $itemDetailRepository;
public function __construct(ItemDetailRepository $itemDetailRepository)
{
$this->itemDetailRepository = $itemDetailRepository;
}
public function collection()
{
$test = Input::get('id');
dd('yeah', $test);
}
}
Run Code Online (Sandbox Code Playgroud)
我想将 id 参数传递给导出文件。我这样尝试,但我没有得到 id。id 为空
我怎么解决这个问题?
我安装了larvel excel,当我尝试获取excel时,它显示以下错误
touch():无法创建文件 /var/folders/wg/vbj_bbf14gl7glz__j1xpvg40000gn/T/laravel-excel-62n8RpljR3nr31FGxE96fwrovKEhXPWT 因为权限被拒绝
我有一个 csv 文件,里面有数据。我想将其导入到我的数据库中。如果csv文件中有重复的数据,我不希望它创建新的重复记录,我想要的是更新它。
但问题是,它正在创造新的重复记录。
控制器(略):
Excel::import(new FruitImport, $request->file('fruits_file'), \Maatwebsite\Excel\Excel::XLSX);
Run Code Online (Sandbox Code Playgroud)
导入文件(略):
class FruitImport implements ToModel, WithUpserts, ... {
public function model(array $row) {
return new Fruit([
'color' => $row[0],
'taste' => $row[1],
'smell' => $row[2],
'name' => $row[3],
'price' => $row[4],
'supplier_id' => $row[5],
...
]);
}
public function uniqueBy() {
return ['color', 'taste', 'smell', 'name'];
}
...
}
Run Code Online (Sandbox Code Playgroud)
所以基本上,如果我将包含具有相同颜色、味道、气味、名称的行的 csv 文件导入到我的数据库中,我希望它被更新。如果我的数据库中的任何记录具有相同的颜色、味道、气味和名称数据,情况也是如此。
我的桌子:
Field | Type | Key | ...
id | big int un..| Pri |
color | varchar(12) | …Run Code Online (Sandbox Code Playgroud) 我需要将大量行导出到 Excel。我正在使用Laravel-excel。我遵循了导出大型数据库的文档中给出的所有建议。
// routes/web.php
Route::post('/dashboard/export', [DashboardController::class, 'export'])->middleware('auth');
// app/Http/Controllers/DashboardController.php
class DashboardController extends Controller
{
public function export(Request $request)
{
$filename = str::random(20).".xlsx";
(new UsersExport($request->all()))->queue($filename, 'public')->chain([
new NotifyUserOfCompletedExcelExport(request()->user(),$filename ),
]);
return json_encode([
'message' => "You will receive email with download link once export is complete."
]);
}
}
// app/Exports/UsersExport.php
class UsersExport implements FromCollection, WithHeadings
{
use Exportable;
public function __construct($config)
{
$this->config = $config;
}
public function collection()
{
$mains = DB::table('mains')->select('name', 'email', 'designation', 'country', 'university', 'discipline', 'subject', …Run Code Online (Sandbox Code Playgroud) 如何使用导入excel更新数据库中的数据。我正在使用 laravel 5.7 和 maatwebsite 3.1
\n这是我的控制器:
\npublic function import()\n{\n $data = Excel::toArray(new ProdukImport, request()->file('file')); \n if ($data) {\n DB::table('produk')\n ->where('id_produk', $data['id'])\n ->update($data);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n这是我的导入类:
\n<?php\n\n namespace App\\Imports;\n\n use App\\Produk;\n use Maatwebsite\\Excel\\Concerns\\ToModel;\n use Maatwebsite\\Excel\\Concerns\\WithHeadingRow;\n\n\n class ProdukImport implements ToModel, WithHeadingRow\n {\n /**\n * @param array $row\n *\n * @return \\Illuminate\\Database\\Eloquent\\Model|null\n */\n public function model(array $row)\n {\n return new Produk([\n 'id_produk' => $row['id'],\n 'nama_produk' => $row['produk'],\n 'harga_jual' => $row['harga']\n ]);\n }\n }\nRun Code Online (Sandbox Code Playgroud)\n这个 dd($data) 结果:
\narray:1 …Run Code Online (Sandbox Code Playgroud) laravel-excel ×10
php ×7
laravel ×5
laravel-5 ×5
excel ×3
laravel-5.6 ×1
laravel-8 ×1
phpexcel ×1
xampp ×1