Laravel-excel: Добавить данные в существующий Excel?

Созданный на 11 сент. 2014  ·  19Комментарии  ·  Источник: Maatwebsite/Laravel-Excel

Привет, я видел, как несколько человек спрашивали, но я не видел полного примера кода (извините, если я его пропустил). Не могли бы вы предоставить полный пример кода того, как добавлять данные в существующий файл Excel?

Самый полезный комментарий

Начиная с версии 1.2.* вы сможете редактировать существующие файлы и экспортировать их, используя следующий синтаксис:

Excel::load($path . '/exported.xls', function($reader) 
{
    $reader->sheet(function($sheet) 
    {
        $sheet->appendRow([
             'test1', 'test2',
         ]);
    });
})->export('xls');

Если вы хотите отредактировать конкретный лист, вы можете сделать: $reader->sheet(1, function() ...) или $reader->sheet('SheetTitle', function() ...)

Все 19 Комментарий

Примеры добавления строк можно найти в нашей документации:

http://www.maatwebsite.nl/laravel-excel/docs/export#rows

Спасибо за ответ! Это всего лишь две строчки кода, поэтому я не знаю, как их использовать. Я пробую это:

Excel::load($path . '/exported.xls', function($reader){
                    $sheet = $reader->getActiveSheet();
                    // Manipulate third row
                    $sheet->row(3, array(
                            'test1', 'test2'
                        ));
                });

Но я получаю Call to undefined method PHPExcel_Worksheet::row()

Файл уже существует на сервере, и я хочу только добавить к нему данные.

Извините, я неправильно понял ваш вопрос.
В настоящий момент невозможно редактировать существующий файл. Добавление строк работает только при создании нового файла Excel.

Начиная с версии 1.2.* вы сможете редактировать существующие файлы и экспортировать их, используя следующий синтаксис:

Excel::load($path . '/exported.xls', function($reader) 
{
    $reader->sheet(function($sheet) 
    {
        $sheet->appendRow([
             'test1', 'test2',
         ]);
    });
})->export('xls');

Если вы хотите отредактировать конкретный лист, вы можете сделать: $reader->sheet(1, function() ...) или $reader->sheet('SheetTitle', function() ...)

Спасибо! Это будет круто! Мне очень нравится, как вы обслуживаете этот пакет.

Пожалуйста :)

Привет,
Можете ли вы, пожалуйста, помочь мне, возможно ли ниже, если да, то как ?.
путем редактирования существующего файла
1. можем ли мы перезаписать конкретную ячейку
2. можем ли мы добавить данные в строку, в которой уже есть данные

  1. есть ли возможность создать раскрывающийся список для столбца
  2. только для чтения ячейка / строка / столбец

Я получаю эту ошибку с предоставленным кодом: Недопустимый тип смещения в isset или пустой.

Когда я использую этот код,

Excel::load(storage_path('exports') . '/report.csv', function($reader) {
        $reader->sheet(function($sheet)  {
            $sheet->rows($data);
     });
})->store('csv',storage_path('exports'),false);

Я получаю эту ошибку,
Недопустимый тип смещения в isset или пустой

То же самое, я получаю эту ошибку

exception 'ErrorException' with message 'Illegal offset type in isset or empty' in pathToVendor/vendor/phpoffice/phpexcel/Classes/PHPExcel.php:582

из этого кода

Excel::load($file_path,  function ($excel) {
    $excel->sheet(function($sheet) {
        $sheet->appendRow([
            'test1', 'test2',
        ]);
    });
})->store($ext, storage_path('exports'), true);

Я использую версию "~1.3.0"

Вам нужно выбрать лист, как еще Excel знает, куда добавить строку?

$excel->sheet('sheetName', function()

Спасибо за действительно быстрый ответ @patrickbrouwers!

После того, как я поставил 'sheetName' появляется еще одна ошибка,

Call to a member function appendRow() on null in path/to/myControllerName.php on line 200

Я думаю, что мои проблемы такие же, как и в этой проблеме https://github.com/Maatwebsite/Laravel-Excel/issues/502#issue -97465111

или я неправильно поставил 'sheetName' ? потому что я пытаюсь добавить файл CSV (создан с использованием той же библиотеки)

так вот пример:

      if(! File::exists($file_path)){
            $excelFile = Excel::create($filename, function ($excel) use($data)
            {
                $excel->setTitle('Export');
                $excel->setCreator('Meta System')->setCompany('Company Sdn Bhd.');
                $excel->setDescription('Export Master Data');
                $excel->sheet('Sheet1', function ($sheet) use($data)
                {
                    $sheet->fromArray($data, null, 'A1', true, true);
                });
            })->store($ext, storage_path('exports'), true);
        }else{
            $excelFile = Excel::load($file_path,  function ($reader) {
                $reader->sheet('Sheet1', function($sheet) {
                    $sheet->appendRow([
                        'test1', 'test2',
                    ]);
                });
            })->export($ext);
        }

Это сработало для меня

  \Excel::load('master.xls', function($reader) {

  $reader->sheet('ReportsMaster',function($sheet) {
    $sheet->appendRow([
         'test1', 'test2',
     ]);
  });
  })->export('xls');

@ ingenio-se
Я использую ваш код и получаю это

Вызов функции-члена appendRow () при значении null

Вы проверили массив, который используете с функцией?
Может быть, вставьте свой код, чтобы иметь представление о том, что происходит

@hisway дважды проверьте имя листа. Он говорит null, потому что лист, который вы пытаетесь добавить, неверен. Если что-то скопируйте имя листа прямо из книги, иногда есть начальные или конечные пробелы, которые вы не используете.

может кто-нибудь объяснить, как это сделать в версии 3.0?

как я могу добавить столбец в существующий столбец ?? Может кто-нибудь мне помочь

Была ли эта страница полезной?
0 / 5 - 0 рейтинги