Загрузите 2 файла Excel с использованием PHP в codeigniter через PHPSpreadsheet - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь прочитать 2 файла Excel и сохранить в БД. Я использую PHPSpreadSheet для чтения файла Excel.

Управляет вставкой первого файла, но не может вставить оба файла.

public function import_excel_files()
{
    $this->load->helper('url_helper');
    $this->load->model('model_finance');

    //upload daily collection file
    $file_mimes = array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

    if(isset($_FILES['upload_file']['name']) && in_array($_FILES['upload_file']['type'], $file_mimes))
    {
        $arr_file = explode('.', $_FILES['upload_file']['name']);
        $extension = end($arr_file);

        if('csv' == $extension)
        {
            $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
        }
        else
        {
            $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
        }
        $spreadsheet = $reader->load($_FILES['upload_file']['tmp_name']);
        $sheetData = $spreadsheet->getActiveSheet()->toArray();

        // this function is to insert daily collection to db
        $this->model_finance->set_daily_collection($sheetData);

    }

    //upload daily sales file
    $file_mimes = array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

    if(isset($_FILES['upload_file_PBB']['name']) && in_array($_FILES['upload_file_PBB']['type'], $file_mimes))
    {
        $arr_file = explode('.', $_FILES['upload_file_PBB']['name']);
        $extension = end($arr_file);

        if('csv' == $extension)
        {
            $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
        }
        else
        {
            $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
        }
        $spreadsheet = $reader->load($_FILES['upload_file_PBB']['tmp_name']);
        $sheetData = $spreadsheet->getActiveSheet()->toArray();

        // this function is to insert daily sales to db
        $this->model_finance->set_daily_sales($sheetData);

    }

    $this->load->view('pages/fin_matchpbb');
}

Я ожидаю, что загрузка файла Excel и вставка в БД, но теперь .. только 1-й файл успешно вставлен в БД .. Второй файл не удалось. Я не уверен, почему ..: (

1 Ответ

0 голосов
/ 17 января 2019

Вам нужно зациклить на $ _FILES, как указано ниже код

if ($_FILES['upload']) {
$file_ary = reArrayFiles($_FILES['ufile']);
foreach ($file_ary as $file) {
    print 'File Name: ' . $file['name'];
    print 'File Type: ' . $file['type'];
    print 'File Size: ' . $file['size'];
}

}

...