setHeaderRowNumber() public method

Set header row number
public setHeaderRowNumber ( integer $rowNumber, integer $duplicates = null ) : boolean
$rowNumber integer Number of the row that contains column header names
$duplicates integer How to handle duplicates (optional). One of: - CsvReader::DUPLICATE_HEADERS_INCREMENT; increments duplicates (dup, dup1, dup2 etc.) - CsvReader::DUPLICATE_HEADERS_MERGE; merges values for duplicate headers into an array (dup => [value1, value2, value3])
return boolean
Ejemplo n.º 1
0
 /**
  * アップロードされたCSVファイルの行ごとの処理
  *
  * @param $formFile
  * @return CsvImportService
  */
 protected function getImportData($app, $formFile)
 {
     // アップロードされたCSVファイルを一時ディレクトリに保存
     $this->fileName = 'upload_' . Str::random() . '.' . $formFile->getClientOriginalExtension();
     $formFile->move($app['config']['csv_temp_realdir'], $this->fileName);
     $file = file_get_contents($app['config']['csv_temp_realdir'] . '/' . $this->fileName);
     // アップロードされたファイルがUTF-8以外は文字コード変換を行う
     $encode = Str::characterEncoding(substr($file, 0, 6));
     if ($encode != 'UTF-8') {
         $file = mb_convert_encoding($file, 'UTF-8', $encode);
     }
     $file = Str::convertLineFeed($file);
     $tmp = tmpfile();
     fwrite($tmp, $file);
     rewind($tmp);
     $meta = stream_get_meta_data($tmp);
     $file = new \SplFileObject($meta['uri']);
     set_time_limit(0);
     // アップロードされたCSVファイルを行ごとに取得
     $data = new CsvImportService($file, $app['config']['csv_import_delimiter'], $app['config']['csv_import_enclosure']);
     $data->setHeaderRowNumber(0);
     return $data;
 }
Ejemplo n.º 2
0
 /**
  * アップロードされたCSVファイルの行ごとの処理
  *
  * @param $formFile
  * @return CsvImportService
  */
 protected function getImportData($app, $formFile)
 {
     // アップロードされたCSVファイルを一時ディレクトリに保存
     $this->fileName = 'upload_' . Str::random() . '.' . $formFile->getClientOriginalExtension();
     $formFile->move($app['config']['csv_temp_realdir'], $this->fileName);
     $file = file_get_contents($app['config']['csv_temp_realdir'] . '/' . $this->fileName);
     if ('\\' === DIRECTORY_SEPARATOR && PHP_VERSION_ID >= 70000) {
         // Windows 環境の PHP7 の場合はファイルエンコーディングを CP932 に合わせる
         // see https://github.com/EC-CUBE/ec-cube/issues/1780
         setlocale(LC_ALL, '');
         // 既定のロケールに設定
         if (mb_detect_encoding($file) === 'UTF-8') {
             // UTF-8 を検出したら SJIS-win に変換
             $file = mb_convert_encoding($file, 'SJIS-win', 'UTF-8');
         }
     } else {
         // アップロードされたファイルがUTF-8以外は文字コード変換を行う
         $encode = Str::characterEncoding(substr($file, 0, 6));
         if ($encode != 'UTF-8') {
             $file = mb_convert_encoding($file, 'UTF-8', $encode);
         }
     }
     $file = Str::convertLineFeed($file);
     $tmp = tmpfile();
     fwrite($tmp, $file);
     rewind($tmp);
     $meta = stream_get_meta_data($tmp);
     $file = new \SplFileObject($meta['uri']);
     set_time_limit(0);
     // アップロードされたCSVファイルを行ごとに取得
     $data = new CsvImportService($file, $app['config']['csv_import_delimiter'], $app['config']['csv_import_enclosure']);
     $ret = $data->setHeaderRowNumber(0);
     return $ret !== false ? $data : false;
 }
Ejemplo n.º 3
0
 public function testCountDoesNotMoveFilePointer()
 {
     $file = new \SplFileObject(__DIR__ . '/../../../Fixtures/data_column_headers.csv');
     $CsvImportService = new CsvImportService($file);
     $CsvImportService->setHeaderRowNumber(0);
     $key_before_count = $CsvImportService->key();
     $CsvImportService->count();
     $key_after_count = $CsvImportService->key();
     $this->assertEquals($key_after_count, $key_before_count);
 }