标签: laravel-excel

Laravel-Excel CSV分隔符无法正常工作

我遇到了同样的问题.使用Laravel 4.这是我的控制器的代码:

public function uploadData()
{
        $file = Input::file('data')->getRealPath();

        \Excel::load($file, function($reader) {
                echo "<pre>";
                $reader->setDelimiter('|');
                print_r($reader->get());
        });
}
Run Code Online (Sandbox Code Playgroud)

输出未在管道分隔符上拆分,而是将其视为一个长字符串.这是一个示例:

Maatwebsite\Excel\Collections\RowCollection Object
(
    [title:protected] => Worksheet
    [items:protected] => Array
        (
            [0] => Maatwebsite\Excel\Collections\CellCollection Object
                (
                    [title:protected] => 
                    [items:protected] => Array
                        (
                            [upc_numberitem_numberqty_availunit_pricedescriptioncolorqty_on_ponext_avail_dt] => 040176424354|53607-3037|0|14.50|PACK-N-GO DUFFELS 20?"|BIRDS ON A WIRE/LEAF GREEN||
                        )

                )

            [1] => Maatwebsite\Excel\Collections\CellCollection Object
                (
                    [title:protected] => 
                    [items:protected] => Array
                        (
                            [upc_numberitem_numberqty_availunit_pricedescriptioncolorqty_on_ponext_avail_dt] => 040176414850|53607-3054|0|14.50|PACK-N-GO DUFFELS 20?"|BLACK/BLACK/BLACK||
                        )

                )
)
Run Code Online (Sandbox Code Playgroud)

我在这里做错了吗?为什么管道字符上没有解析行?

如果我更改了delimiter设置config/csv.php,则会正确解析文件,结果如下所示:

Maatwebsite\Excel\Collections\RowCollection Object
(
    [title:protected] …
Run Code Online (Sandbox Code Playgroud)

php phpexcel laravel-4 laravel-excel

3
推荐指数
1
解决办法
3399
查看次数

使用控制器下载 Laravel Excel

所以我创建了一个 PHP 控制器来处理由 JS 发布的导出数据。问题是我可以看到它在控制台中创建了一些东西,但文件下载从未开始。我尝试使用 ->store (laravel excel) 并将其保存在导出文件夹中,但当我尝试使用时再次

return \Response::download($result);
Run Code Online (Sandbox Code Playgroud)

它仍然不会开始下载。我遇到的问题只是开始下载。

角度控制器

$scope.exportMatrix = function () {
    var postData = {list: $scope.list, matrix: $scope.matrix};
    $http({
        method: 'POST',
        url: '/export',
        dataType: 'obj',
        data: postData,
        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    }).success(function (data) {
        console.log(data);
    }).error(function (data) {
        console.log("failed");
    });
}
Run Code Online (Sandbox Code Playgroud)

路线

Route::post('/export', 'ExportController@export');
Run Code Online (Sandbox Code Playgroud)

PHP控制器

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App;
use Excel;
use Response;
class ExportController extends Controller {

public function export()
{

    $excel = App::make('excel');

    Excel::create('Test', …
Run Code Online (Sandbox Code Playgroud)

php export laravel angularjs laravel-excel

3
推荐指数
1
解决办法
1万
查看次数

范围 - 如何从laravel excel导入返回错误?

我正在使用Maatwebsite/Laravel-Excel将一些数据导入我的laravel应用程序.

我循环使用excel的行,验证数据然后保存它,但如果我得到验证错误,我想从Excel :: load()函数外部返回$ error变量.可能吗?

 public function import()
 {
     Excel::load(Input::file('excelFile'), function ($reader) {
                foreach ($reader->toArray() as $row) {
                   if($everythingOK){
                     //do stuff
                    } else {
                        $errors[] = 'error';
                    }
                }
            });
     return $errors;
}
Run Code Online (Sandbox Code Playgroud)

php excel scope laravel laravel-excel

3
推荐指数
1
解决办法
2327
查看次数

找不到Laravel Excel Class'ZipArchive'

我有laravel项目,可以使用laravel-excel插件从.csv文件将数据上传到mysql。

当我尝试从.csv文件上传数据到mysql时,出现错误“找不到类'ZipArchive'”。如果我使用的是.csv,则无法理解“ zip”与它的关系,我正在使用:VMware Debian服务器,PHP 7.1

在我的PC上,一切正常。

php laravel laravel-excel

3
推荐指数
1
解决办法
2401
查看次数

解析错误:语法错误,文件意外结束,需要 elseif (T_ELSEIF) 或 else (T_ELSE) 或 endif (T_ENDIF)

你好亲爱的我想创建一个客户刀片,为用户提供导入和导出 Excel 文件的功能。我的customers_blade.php 看起来像这样;

@extends('layouts.app')

@section('content')
<div class="panel-heading">Import and Export Data Into Excel File</div>

<div class="panel-body">
    {!! Form::open(array('route'=>'customer.import','method'=>'POST','files'=>'true')) !!}
    <div class="row">
        <div class="col-xs-10 col-sm-10 col-md-10">
            @if(Session::has('success'))
                <div class="alert alert-success">
                    {{Session :: get('message')}}
                </div>
                @if(Session::has(warning))
                <div class="alert alert-warning">
                    {{Session::get('message')}}
                </div>
                @endif
                <div class="form-group">
                    {!! Form::label('sample_file','Select File to Import:',['class'=>'col-md-3']) !!}
                    <div class="col-md-9">
                        {!! Form::file('customers',array('class'=>'form-control')) !!}
                        {!! $error->first('products','<p class="alert alert-danger">:message</p') !!}
                    </div>
                </div>
        </div>
        <div class="col-xs-2 col-sm-2 col-md-2 text-center">
            {!! Form::submit('Upload',['class'=>'btn btn-success']) !!}
        </div>
    </div>
    {!! Form::close() !!}
</div>
@endsection
Run Code Online (Sandbox Code Playgroud)

但是当我转到页面时会发生此错误。我该如何编辑它。你能帮我么?

解析错误:语法错误,文件意外结束,需要 elseif …

exception laravel blade laravel-excel laravel-blade

3
推荐指数
1
解决办法
2万
查看次数

如何增加laravel的最大执行时间?

我想上传大型excel文件。但是因为文件包含很多行,加载速度很慢,我收到了这个错误:

Controller.php 第 457 行中的 FatalErrorException:超过了 120 秒的最大执行时间

我已经把它放在我的 .htaccess 上:

<IfModule mod_php5.c>
    php_value max_execution_time 1500
    php_value upload_max_filesize 15M
</IfModule>
Run Code Online (Sandbox Code Playgroud)

我还在控制器顶部添加了这个:

ini_set('memory_limit', '3000M');
ini_set('max_execution_time', '0');
Run Code Online (Sandbox Code Playgroud)

我还在 php.ini 中更改了 max_execution_time:

max_execution_time = 300
Run Code Online (Sandbox Code Playgroud)

并在 config.inc.php 上添加:

$cfg['ExecTimeLimit'] = 0;
Run Code Online (Sandbox Code Playgroud)

我想知道为什么它根本不起作用并不断让我陷入那个错误......代码有没有遗漏?任何帮助将不胜感激,谢谢!

php laravel laravel-5 laravel-excel maatwebsite-excel

3
推荐指数
3
解决办法
2万
查看次数

使用 Excel::import 在 Maatwebsite / Laravel Excel 3.1 上导入 CSV

我已将 Maatwebsite/Laravel-Excel 从 2.1 升级到 3.1。某些方法已被弃用。

这是 2.1 版的代码。

$data = Excel::load($path, function($reader) {})->get()->toArray();
Run Code Online (Sandbox Code Playgroud)

当我使用 2.1 时它可以工作,但升级后,它是错误的

调用未定义的方法 Maatwebsite\Excel\Excel::load()

对于 3.1 版,我尝试更改为

$data = Excel::import($path, function($reader) {})->get()->toArray();
Run Code Online (Sandbox Code Playgroud)

我知道这可能不是正确的语法。

这是我使用 2.1 开发时的完整代码。

$path = $request->file('csv_file')->getRealPath();

    if ($request->has('header')) {
        $data = Excel::import($path, function($reader) {})->get()->toArray();
    } else {
        $data = array_map('str_getcsv', file($path));
    }

    if (count($data) > 0) {
        if ($request->has('header')) {
            $csv_header_fields = [];
            foreach ($data[0] as $key => $value) {
                $csv_header_fields[] = $key;
            }
        }
        $csv_data = array_slice($data, 0, 8);

        $csv_data_file = …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-excel maatwebsite-excel

3
推荐指数
1
解决办法
7636
查看次数

AWS SQS 异常“413 请求实体太大”

我已经被困了一段时间来弄清楚以下异常,任何帮助都会被分配。我们正在 Laravel 项目上使用 AWS Lambda 服务。我们正在使用Laravel Excel将大量数据导出到 CSV 文件,并通过 Laravel SQS 队列来完成此操作。

PHP 版本:7.2
Laravel 框架:7.30.1
Laravel Excel:3.1

例外:

Aws\Sqs\Exception\SqsException /tmp/vendor/aws/aws-sdk-php...
stage.ERROR: Error executing "SendMessage" on "https://sqs.eu-central- 
1.amazonaws.com"; AWS HTTP error: Client error: `POST https://sqs.eu- 
central-1.amazonaws.com/` resulted in a `413 Request Entity Too Large` 
response:
HTTP content length exceeded 1662976 bytes.
Unable to parse error information from response - Error parsing XML: String could not be parsed as 
XML {"exception":"[object] (Aws\\Sqs\\Exception\\SqsException(code: 0): Error executing      
\"SendMessage\" on \"https://sqs.eu-central-1.amazonaws.com/"; AWS …
Run Code Online (Sandbox Code Playgroud)

amazon-sqs laravel laravel-excel aws-lambda laravel-vapor

3
推荐指数
1
解决办法
4188
查看次数

如何检查Excel文件的第一行或哪些列在Laravel Excel中是否有效?

我正在尝试检查用户上传的excel文件是否具有正确的列/第一行/属性,然后再读入其他行.我正在使用Laravel 4和MaatWebsite的 Laravel Excel.

我创建了一个函数,允许用户通过导入excel文件来更新系统数据库的employee表.

现在正确的Excel文件,有,比方说,3列:firstname,lastname,和username.如果excel文件具有所有这些属性/列,我现在将读取以下每一行并验证每一行,这实际上不是我现在问题的一部分.

但是如果excel文件中没有3个属性/列中的任何一个,我将忽略该请求并返回错误.

我尝试使用它,它获取lastname属性:

$sample = Excel::selectSheetsByIndex(0)->load($readFile, function($reader){})->get(array("lastname"));
Run Code Online (Sandbox Code Playgroud)

但即使lastname没有找到,$ sample仍然不为空,所以我无法检查是否lastname存在.

如何检查属性/列是否存在?

更新:

如果属性行之后的第一行具有所有需要的属性,那么我选择的答案将完美地运行.例如:如果有值firstname,lastnameusername.

但是,如果first name缺少第一个非属性行(引用列名的属性行)的值(或任何attritbute值),则提供的脚本将返回false,即使excel文件具有所有firstname,lastnameusername属性.

所以我将脚本修改为:

  1. 首先,我读了excel文件.我还声明了一个布尔变量来标记excel文件是否有效.

$excelChecker = Excel::selectSheetsByIndex(0)->load('path/to/file', function($reader){})->get()->toArray();

$excelIsValid = false;
Run Code Online (Sandbox Code Playgroud)
  1. 然后我循环遍历所有的结果,并检查是否至少一次,全部所需要的值(firstname,lastname,和username)已经被设置或都存在.

    foreach($excelChecker as $ex){
    
        if(isset($ex["lastname"]) && isset($ex["firstname"]) && isset($ex["username"])){
             $excelIsValid = true;
       }
    }
    
    Run Code Online (Sandbox Code Playgroud)

说明:

如果$excelIsValid仍然false …

phpexcel laravel laravel-4 laravel-excel

2
推荐指数
1
解决办法
1万
查看次数

第 2 行超出范围 (2 - 1) laravel-excel

我正在尝试使用 laravel-excel 导入一个 excel 文件,所以我使用了这个算法

$result = Excel::load('public/uploads/test.xlsx',function($reader){

})->get();
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误: RowIterator.php 第 125中的 PHPExcel_Exception: 第 2 行超出范围 (2 - 1)

php phpexcel phpexcelreader laravel-5 laravel-excel

2
推荐指数
1
解决办法
4411
查看次数