public function testGetFields()
 {
     $file = new \SplFileObject(__DIR__ . '/../Fixtures/data_column_headers.xlsx');
     $reader = new ExcelReader($file, 0);
     $this->assertEquals(array('id', 'number', 'description'), $reader->getFields());
     $this->assertEquals(array('id', 'number', 'description'), $reader->getColumnHeaders());
 }
Beispiel #2
0
 public function load()
 {
     $headers = $this->getOption('headers');
     $headerRow = $this->getOption('header_row');
     $reader = new ExcelReader($this->getFile(), $headerRow, $this->getOption('worksheet'), $this->getOption('read_only'));
     if (false !== $headerRow) {
         // $duplicateHeaders = $headers == 'merge' ? ExcelReader::DUPLICATE_HEADERS_MERGE : CsvReader::DUPLICATE_HEADERS_INCREMENT;
         $reader->setHeaderRowNumber($headerRow);
         //, $duplicateHeaders);
     }
     if (is_array($headers)) {
         $reader->setColumnHeaders($headers);
     } elseif ('number' == $headers) {
         $headers = [];
         for ($i = 1; $i <= count($reader->getColumnHeaders()); ++$i) {
             $headers[] = 'field' . $i;
         }
         $reader->setColumnHeaders($headers);
     }
     // $reader->setStrict($this->getOption('strict'));
     return $this->setReader($reader);
 }
 public function updateEntityAction($object)
 {
     //override createAction in line 66;
     //get path and set the file
     $path = '../web/media/' . $object->getPath();
     $file = new \SplFileObject($path);
     //check extension to read
     if ($object->getExtension() == 'csv') {
         $reader = new CsvReader($file, ',');
         $reader->setHeaderRowNumber(0);
     } else {
         if ($object->getExtension() == 'xls' || $object->getExtension() == 'xlsx') {
             $reader = new ExcelReader($file, 0);
         }
     }
     //find Key :applicationKey
     $readerAllHeader = $reader->getColumnHeaders();
     foreach ($readerAllHeader as $readerHeader) {
         if (preg_match("/applicationKey/i", $readerHeader)) {
             $key = $readerHeader;
         }
     }
     $em = $this->getDoctrine()->getManager();
     $em->getConnection()->beginTransaction();
     // suspend auto-commit
     //$doctrineWriter = new DoctrineWriter($em, 'LmcAdmissionBundle:Test','appPrefix');
     $doctrineWriter = new DoctrineWriter($em, 'LmcAdmissionBundle\\Entity\\Application', $key);
     $doctrineWriter->disableTruncate();
     $doctrineWriter->prepare();
     $line = 1;
     $fail = 0;
     $error_line = array();
     $dateField = array('createdAt', 'deletedAt', 'updatedAt', 'birthDate');
     try {
         foreach ($reader as $row) {
             foreach ($dateField as $field) {
                 if (!$row[$field]) {
                     unset($row[$field]);
                 } else {
                     $dateConverter = strtotime($row[$field]);
                     $new_dateConverter = date_create(date('Y-m-d H:i:s', $dateConverter));
                     $row[$field] = $new_dateConverter;
                 }
             }
             //                if(is_float($row['interviewDate'])){
             //                    $temp = date('Y-m-d H:i:s', $row['interviewDate']);
             //                    $row['interviewDate'] = $temp;
             //                }
             $line++;
             $doctrineWriter->writeItem($row);
             if ($doctrineWriter->getFail() != $fail) {
                 $error_line[] = $line;
                 $fail = $doctrineWriter->getFail();
             }
         }
         $success = $doctrineWriter->getSuccess();
         $doctrineWriter->finish();
         $em->getConnection()->commit();
         if ($fail != 0) {
             $log = 'sccess:' . $success . ' fail:' . $fail . ' line (' . implode(",", $error_line) . ')';
         } else {
             $log = 'sccess:' . $success . ' fail:' . $fail;
         }
         $object->setLog($log);
         $em->persist($object);
         $em->flush();
     } catch (Exception $e) {
         $em->getConnection()->rollback();
         throw $e;
     }
 }