Скопируйте формулу Excel столбца во все строки при записи динамических данных из БД в PHP

Я использую PHP (laravel) для динамической записи данных в лист Excel из базы данных. У меня есть лист Excel, в котором я заполнил данные в первой строке формулой в нескольких столбцах.

Теперь, что я хочу, я просто хочу динамически копировать эту формулу в каждый соответствующий столбец, когда я записываю данные динамически. Я использую maatwebsite для записи данных в лист Excel. См. Код ниже.

Excel::selectSheetsByIndex(1)->load(public_path('uploads') . '/data.xlsx', function($reader) {
            $reader->sheet('Sheetname', function($sheet) {
                        // Append row as very last
                        $sheet->appendRow(array(
                            'appended', 'appended' // Here I am appending the dynamic data in my code.
                        ));
                    });
        }, 'UTF-8')->store('xlsx', true);

Предположим, что столбец "M" имеет формулу в первой строке, поэтому всякий раз, когда новая запись будет заполнять этот столбец динамически, этот столбец должен содержать ту же формулу. Как я могу этого добиться? Кто-нибудь сталкивался с этим раньше?


person Raghbendra Nayak    schedule 01.05.2017    source источник


Ответы (2)


вы можете использовать как $sheet->setCellValue('B5','=SUM(B2:B4)'); во время записи данных в файл Excel ... Надеюсь, это поможет вам ...
ОБНОВЛЕННЫЙ КОД

for($k=1;$k>n;$k++){ $sheet->setCellValue('AC' . $k, '=SUM(N' . $k . ',O' . $k . ',Q' . $k . ',S' . $k . ',T' . $k . ',V' . $k . ',Y' . $k . ',AB' . $k . ')'); }

person Amit Sahu    schedule 05.05.2017
comment
Но мне нужно скопировать формулу из вышеприведенного столбца в следующий. - person Raghbendra Nayak; 05.05.2017
comment
вы можете динамически генерировать формулу для каждой строки, проверьте мой обновленный ответ. - person Amit Sahu; 08.05.2017
comment
Итак, нет возможности скопировать формулу в следующую ячейку Excel? - person Raghbendra Nayak; 08.05.2017
comment
Позвольте мне попробовать для этого - person Raghbendra Nayak; 08.05.2017
comment
Может быть, есть другой вариант для достижения этой цели ... но мое решение, приведенное выше, соответствует вашим требованиям ... - person Amit Sahu; 09.05.2017

Вы можете попробовать что-то вроде этого

$rule = ['appended', 'appended']; 
    Excel::selectSheetsByIndex(1)->load(public_path('uploads') . '/data.xlsx', function ($reader) use ($rule) {
        $reader->sheet('Sheetname', function ($sheet) use ($rule) {
            // Append row as very last
            $sheet->appendRow($rule);
        });
    }, 'UTF-8')->store('xlsx', true);
person Sarnodeep Agarwalla    schedule 01.05.2017
comment
Таким образом формула будет скопирована в мою колонку? - person Raghbendra Nayak; 01.05.2017
comment
Согласно вашему коду, вы хотели добавить коды `$ sheet-› appendRow (array ('appended', 'appended' // Здесь я добавляю динамические данные в свой код.)); `Теперь вы можете добавить правило динамически ... присвоить правило переменной ... - person Sarnodeep Agarwalla; 01.05.2017
comment
Приносим извинения за неудобства, но я просто хочу скопировать формулу столбца в данные следующих динамических столбцов. См .: Предположим, что столбец M имеет формулу в первой строке, поэтому всякий раз, когда новая запись будет заполнять этот столбец динамически, этот столбец должен содержать ту же формулу. - person Raghbendra Nayak; 01.05.2017
comment
Есть какие-нибудь предложения по этому поводу? - person Raghbendra Nayak; 01.05.2017
comment
Формула столбца M, вы получаете ее динамически из базы данных ???? - person Sarnodeep Agarwalla; 01.05.2017
comment
Позвольте нам продолжить это обсуждение в чате. - person Raghbendra Nayak; 01.05.2017