Laravel-excel: masalah format tanggal impor chunk

Dibuat pada 21 Apr 2015  ·  32Komentar  ·  Sumber: Maatwebsite/Laravel-Excel

Saya mengimpor file.xlsx di sini ada bidang DOB = 16-OCT-1992, setelah mendapatkan nilai dalam file DOB diubah menjadi 34215, saya pikir itu tidak menghitung rumus di bidang DOB, Tolong bantu saya? Mendesak

Excel::filter('chunk')->load('file.xlsx')->chunk(250, function($results)
{
foreach($hasil sebagai $baris)
{
// lakukan sesuatu
}
});

Komentar yang paling membantu

Solusi lain adalah mengatur kolom tanggal dalam konfigurasi secara terprogram sebelum Anda melakukan panggilan chunk :

config(['excel.import.dates.columns' => [
            'deleted_at,
            'updated_at'
        ]]);

Excel::filter('chunk')->load($file)...

Semua 32 komentar

Ketika Anda mengimpornya tanpa ->chunk() apakah Anda memiliki masalah yang sama?

tanpa chunk berfungsi dengan baik dengan reader->formatdate..., tetapi saya tidak dapat melakukannya tanpa chunk karena file terlalu besar.

Saya menguji dengan CSV, ini berfungsi dengan baik karena csv menghapus semua perhitungan dan format, tetapi harus bekerja dengan xlsx.

Coba sertakan ->formatDates dalam skrip ini juga.

saya mencoba dengan ini, tetapi tidak berhasil.

Bisakah Anda membagikan kode yang berfungsi (tanpa potongan) dan upaya potongan dengan formatDates()

Saya memiliki masalah yang sama, saya mengimpor file xls dengan metode chunk, tetapi mengonversi tanggal dalam format float dan saya tidak dapat mengakses variabel $reader untuk mengatur kolom tanggal.

Apakah Anda menemukan solusi?

Terima kasih

akhirnya saya memecahkan ini dengan mengubah terlebih dahulu menjadi file csv kemudian memuat lagi csv ini, karena csv menghapus semua pemformatan dll.

Kami baru saja menyelesaikan masalah ini dalam proyek kami. Saat memotong file excel (saat ini berisi sekitar 10 baris) kami kehilangan pemformatan sel apa pun yang didefinisikan sebagai tanggal - mereka hanya keluar sebagai angka seperti 27777.

Kami telah berhasil menyelesaikannya dalam kasus ini dengan tidak menggunakan chunking dan untuk proyek ini yang mungkin berhasil. Saya pikir masalahnya adalah bahwa pada baris 496 LaravelExcelReader.php fungsi setReadDataOnly diaktifkan. Menurut https://github.com/PHPOffice/PHPExcel/issues/15 mengaktifkannya berarti sel tanggal tidak diuraikan dengan benar.

Masalah yang sama disini!

Apakah Anda menemukan solusi?

Mengalami masalah yang sama dengan pengaturan berikut (disederhanakan)...

File excel saya:

| nama | tanggal_lahir |
| --- | --- |
| John Smith | 09/09/1987 |

Impor kode di pengontrol saya menggunakan chunk:

$file = \Input::file('student_file');

\Excel::filter('chunk')
    ->selectSheets('students')
    ->load($file)
    ->formatDates(true)
    ->chunk(250, function($results) {

        dd($results);

    });

Hasil dari dd() :

RowCollection {#1019 ▼
  #title: null
  #items: array:1 [▼
    0 => CellCollection {#789 ▼
      #title: null
      #items: array:9 [▼
        "name" => "John Smith"
        "birth_date" => 32029.0
      ]
    }
  ]
}

Jika saya tidak menggunakan filter chunk, seperti ini:

\Excel::selectSheets('students')
    ->load($file, function($reader) {

        dd($reader->get());

    });

Saya mendapatkan yang berikut dari dd() :

RowCollection {#527 ▼
  #title: "students"
  #items: array:1 [▼
    0 => CellCollection {#628 ▼
      #title: null
      #items: array:9 [▼
        "name" => "John Smith"
        "birth_date" => Carbon {#627 ▼
          +"date": "1987-09-09 00:00:00.000000"
          +"timezone_type": 3
          +"timezone": "Europe/London"
        }
      ]
    }
  ]
}

Ada saran?

Melaporkan masalah di pihak saya juga.

get() berfungsi dan mengembalikan objek Carbon, chunk() mengembalikan float.

EDIT: pada "maatwebsite/excel" terbaru: "~ 2.1.0",

Memiliki masalah yang sama dengan filter impor chunk dan tanggal dibaca sebagai float.

Masalah yang sama di sini dengan chunk. Solusi kami adalah menambahkan bidang tanggal dari $row ke tanggal dasar (1900-01-01):

$date_aux = Carbon::create(1900, 01, 01, 0);
$date_correct = $date_aux->addDays($row->date_wrong - 2);

Harus mengurangi 2 dari tanggal yang salah untuk mendapatkan yang benar.

Semoga ini membantu.

Masalah yang sama disini

Masalah yang sama disini

Masalah yang sama disini

Masalah yang sama disini

Masalah ini dapat diselesaikan dengan
$UNIX_DATE = ($baris->DOB - 25569) * 86400;
$date_column = gmdate("dmY H:i:s", $UNIX_DATE);

bug lama dan tidak ada solusi sendiri?... masalah yang sama!
Terima kasih, bsiu

+1

Solusi lain adalah mengatur kolom tanggal dalam konfigurasi secara terprogram sebelum Anda melakukan panggilan chunk :

config(['excel.import.dates.columns' => [
            'deleted_at,
            'updated_at'
        ]]);

Excel::filter('chunk')->load($file)...

+1 memiliki masalah yang sama. Saat menggunakan chunk, tampaknya tidak mengonversi tanggal dengan benar. Bila saya lakukan:

$import = Excel::filter('chunk')->load($file)->setDateColumns(['my_date'])->chunk(1, function($results) {
    dd($results);
}, false);
// my_date is a numeric value

Dengan:

$import = Excel::load($file)->setDateColumns(['my_date'])->dd();
// my_date is carbon.

@jamestowers itu solusi yang bagus - ingat jika Anda menggunakan potongan antrian ingat untuk memanggil config di penyedia layanan atau sesuatu yang lain tidak akan berfungsi. Semoga bug ini segera diperbaiki @patrickbrouwers

Masalah yang sama. Penamaan kolom tanggal bukanlah solusi yang kami cari, tetapi akan dilakukan sekarang. Mengapa tidak membaca kedua nilai DAN format (tetapi bukan gaya dan hal-hal lain), PHPExcel?

Mengalami masalah ini hari ini, 2 tahun sejak dilaporkan, masih belum terselesaikan. proyek ditinggalkan?

Masalah yang sama :+1:

Masalahnya sebenarnya terjadi karena, seperti yang dikatakan @cooperaj , setReadDataOnly disetel ke true di ChunkedReadJob. Mengomentari baris ini memecahkan masalah ini.

@patrickbrouwers Saya akan dengan senang hati memberikan PR untuk ini, tetapi saya pikir Anda punya alasan untuk menonaktifkan pemformatan sel di ChunkedReadJob?

Karena begitu banyak orang memiliki masalah ini, alangkah baiknya jika kita dapat mengatasi hal ini.

Selesaikan masalah dengan baris ini

setDateColumns() hadir sebagai penyelamat

$holidaylist = Excel::load('storage/app/public/holidaylisting.xlsx', function($reader) {})->setDateColumns(['holiday_start_date','holiday_end_date'])->get();

Saya telah menarik rambut saya di atas yang satu ini. Mengapa ini tidak diperbaiki? Saya melewatkan dua tenggat waktu karena masalah Mickey Mouse dalam rutinitas impor Excel yang berusia lebih dari 2 tahun?

solusinya adalah ketika Anda membaca tanggal jenis kolom Anda, Anda harus memformatnya menjadi string jadi coba ini tolong
\PHPExcel_Style_NumberFormat::toFormattedString($row['date_example'], 'YYYY-MM-DD']

Kami menutup semua tiket lama, karena versi 2.* sudah mencapai tahap Akhir Hidup. Perhatian penuh kami sekarang dialokasikan ke versi 3.0. Masih dimungkinkan untuk menggunakan 2.*, tetapi tidak akan ada dukungan aktif lagi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat