PHP Excel Templator (mesin templating PHP untuk Excel) atau cara kami menulis hardcode untuk Excel sebelumnya

gambar

Saya pikir sudah jelas dari tangkapan layar tentang apa ini. Tetapi, agar tidak menggandakan teks, yang sudah dijelaskan dalam dokumentasi , saya hanya akan menceritakan tentang poin-poin penting.

Faktanya adalah bahwa pustaka php untuk bekerja dengan dokumen excel sudah muncul sejak lama, tetapi mesin template belum ditemukan untuk itu (setidaknya saya belum menemukan sesuatu yang lebih masuk akal). Dan kita semua membutuhkan pustaka seperti itu untuk excel, di mana kita memasukkan variabel templat ke templat, meneruskan parameter untuknya, dan mengirimkannya ke render. Semua ini dilakukan dengan satu perintah:

use alhimik1986\PhpExcelTemplator\PhpExcelTemplator; PhpExcelTemplator::saveToFile('./template.xlsx', './exported_file.xlsx', [ '{current_date}' => date('dm-Y'), '{department}' => 'Sales department', ]); 

Selain itu, kami memiliki Daftar Keinginan berikut:

  • kami ingin menerapkan beberapa variabel templat dalam satu sel
  • dan kami juga ingin melewatkan array, dan dalam excel untuk ini baris yang sesuai dibuat di sel
  • tetapi bagaimana dengan array dua dimensi sehingga tidak hanya baris tetapi juga kolom dibuat
  • dan kita juga perlu menerapkan gaya untuk setiap sel yang dimasukkan, misalnya, untuk menyoroti jumlah besar berwarna hijau atau untuk menyoroti karyawan yang telah membedakan diri mereka dalam huruf tebal.

Anda akan mengatakan bahwa saya sudah mencoba melakukan ini: ketika baris dibuat, kolom di sebelah kanan sel ini akan digandakan. Tidak, ini tidak akan terjadi, karena pada kenyataannya itu bukan garis yang dibuat, tetapi "sel dengan pergeseran ke bawah" ditambahkan. Omong-omong, di PHP Spreadsheet saat ini tidak ada fungsi seperti itu, ia hanya dapat menyisipkan baris.

Apakah efek samping mungkin terjadi ketika menggunakan sejumlah besar array satu dimensi dan dua dimensi? Ya mereka. Terutama ketika beberapa array dua dimensi digunakan pada baris yang sama dan pada beberapa baris berturut-turut. Faktanya adalah bahwa sel-sel (terletak di sebelah kanan) yang tidak mengandung variabel templat, mereka tidak bergerak. Akibatnya, mereka bisa tumpang tindih oleh sel dengan array dua dimensi. Jalan keluar dari situasi ini adalah membuat variabel templat dengan data kosong dan tempatkan variabel-variabel ini di sebelah sel yang Anda perlu indentasi. Contoh efek samping tersedia di folder "sampel".

Kedengarannya rumit, tetapi jika garis dibuat, maka akan ada lebih banyak efek samping. Artinya, kemungkinan efek sampingnya relatif rendah.

Rencana: buat contoh yang menunjukkan cara menangani efek samping; kemampuan untuk menerapkan gaya tanpa menggunakan setter (untuk mengekspor lebih sedikit kelas dan mengurangi jumlah kode yang digunakan). Mengapa saya belum melakukannya sekarang? Saya butuh dukungan, yaitu, saya perlu tahu bahwa seseorang membutuhkan ini. Dan kemudian tiba-tiba saya menemukan sepeda dan yang saya lakukan hanyalah permainan lengkap. Karena itu, saya menunggu tanggapan Anda.

Tautan ke proyek

Source: https://habr.com/ru/post/id425763/


All Articles