Phpexcel baris baru dalam sel

Saya menggunakan PHPExcel untuk menghasilkan ekspor excel. Excel memiliki fitur autoline break. Bagaimana saya bisa mengaktifkan ini?

Pelanggan saya hanya menggunakan Microsoft Excel, jadi tidak harus mendukung program lain

Ada ide?

Saya dapat menggunakan sesuatu seperti ini. cara membuat baris Baru di sel menggunakan phpexcel Tapi itu lebih merupakan semacam peretasan, daripada solusi nyata

MEMPERBARUI
Lihat, setelah kolom digabungkan, bungkus teks gagal. Saya mencoba menambahkan teks bungkus pada setiap kolom yang digabungkan, tetapi tidak mempengaruhi hasil

Phpexcel baris baru dalam sel

PEMBARUAN 2

Sel-sel digabungkan, lalu saya tambahkan teks bungkus, lalu saya tambahkan teks

Solusi terbaik

Setel kolom ke lebar tetap;

Lihatlah lembar kedua yang dibuat di /Tests/05featuredemo. php sebagai contoh

Anda hanya perlu menggunakan \n jika Anda ingin mengontrol dengan tepat di mana garis dibungkus

Solusi Terkait

Php – Cara mencegah injeksi SQL di PHP

Cara yang benar untuk menghindari serangan injeksi SQL, terlepas dari basis data mana yang Anda gunakan, adalah dengan memisahkan data dari SQL, sehingga data tetap menjadi data dan tidak akan pernah ditafsirkan sebagai perintah oleh parser SQL. Dimungkinkan untuk membuat pernyataan SQL dengan bagian data yang diformat dengan benar, tetapi jika Anda tidak sepenuhnya memahami detailnya, Anda harus selalu menggunakan pernyataan yang disiapkan dan kueri berparameter. Ini adalah pernyataan SQL yang dikirim ke dan diuraikan oleh server database secara terpisah dari parameter apa pun. Dengan cara ini, penyerang tidak mungkin menyuntikkan SQL berbahaya

Anda pada dasarnya memiliki dua opsi untuk mencapai ini

  1. Menggunakan PDO (untuk semua driver database yang didukung)

     $stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');
    
     $stmt->execute([ 'name' => $name ]);
    
     foreach ($stmt as $row) {
         // Do something with $row
     }
    
  2. Menggunakan MySQLi (untuk MySQL)

     $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
     $stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'
    
     $stmt->execute();
    
     $result = $stmt->get_result();
     while ($row = $result->fetch_assoc()) {
         // Do something with $row
     }
    
    _

Jika Anda terhubung ke database selain MySQL, ada opsi kedua khusus driver yang dapat Anda rujuk (misalnya, pg_prepare() dan pg_execute() untuk PostgreSQL). PDO adalah opsi universal


Menyiapkan koneksi dengan benar

Perhatikan bahwa saat menggunakan PDO untuk mengakses database MySQL, pernyataan yang sebenarnya disiapkan tidak digunakan secara default. Untuk memperbaikinya, Anda harus menonaktifkan emulasi pernyataan yang disiapkan. Contoh membuat koneksi menggunakan PDO adalah

$dbConnection = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'password');

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Dalam contoh di atas, mode kesalahan tidak sepenuhnya diperlukan, tetapi disarankan untuk menambahkannya. Dengan cara ini skrip tidak akan berhenti dengan

 $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
 $stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'

 $stmt->execute();

 $result = $stmt->get_result();
 while ($row = $result->fetch_assoc()) {
     // Do something with $row
 }
0 ketika terjadi kesalahan. Dan itu memberi pengembang kesempatan untuk
 $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
 $stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'

 $stmt->execute();

 $result = $stmt->get_result();
 while ($row = $result->fetch_assoc()) {
     // Do something with $row
 }
_1 kesalahan apa pun yang
 $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
 $stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'

 $stmt->execute();

 $result = $stmt->get_result();
 while ($row = $result->fetch_assoc()) {
     // Do something with $row
 }
2n sebagai
 $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
 $stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'

 $stmt->execute();

 $result = $stmt->get_result();
 while ($row = $result->fetch_assoc()) {
     // Do something with $row
 }
3s

Apa yang wajib, bagaimanapun, adalah baris

 $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
 $stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'

 $stmt->execute();

 $result = $stmt->get_result();
 while ($row = $result->fetch_assoc()) {
     // Do something with $row
 }
_4 pertama, yang memberi tahu PDO untuk menonaktifkan pernyataan siap yang ditiru dan menggunakan pernyataan nyata yang disiapkan. Ini memastikan pernyataan dan nilai tidak diurai oleh PHP sebelum mengirimkannya ke server MySQL (memberikan kemungkinan penyerang tidak memiliki kesempatan untuk menyuntikkan SQL berbahaya)

Meskipun Anda dapat menyetel

 $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
 $stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'

 $stmt->execute();

 $result = $stmt->get_result();
 while ($row = $result->fetch_assoc()) {
     // Do something with $row
 }
_5 dalam opsi konstruktor, penting untuk dicatat bahwa versi 'lama' PHP (sebelum 5. 3. 6) diam-diam mengabaikan parameter charset di DSN


Penjelasan

Pernyataan SQL yang Anda berikan ke

 $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
 $stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'

 $stmt->execute();

 $result = $stmt->get_result();
 while ($row = $result->fetch_assoc()) {
     // Do something with $row
 }
_6 diuraikan dan dikompilasi oleh server database. Dengan menentukan parameter (baik
 $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
 $stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'

 $stmt->execute();

 $result = $stmt->get_result();
 while ($row = $result->fetch_assoc()) {
     // Do something with $row
 }
_7 atau parameter bernama seperti
 $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
 $stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'

 $stmt->execute();

 $result = $stmt->get_result();
 while ($row = $result->fetch_assoc()) {
     // Do something with $row
 }
8 pada contoh di atas) Anda memberi tahu mesin basis data tempat Anda ingin memfilter. Kemudian saat Anda memanggil
 $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
 $stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'

 $stmt->execute();

 $result = $stmt->get_result();
 while ($row = $result->fetch_assoc()) {
     // Do something with $row
 }
_9, pernyataan yang disiapkan digabungkan dengan nilai parameter yang Anda tentukan

Yang penting di sini adalah nilai parameter digabungkan dengan pernyataan yang dikompilasi, bukan string SQL. Injeksi SQL bekerja dengan mengelabui skrip agar memasukkan string berbahaya saat membuat SQL untuk dikirim ke database. Jadi dengan mengirimkan SQL aktual secara terpisah dari parameter, Anda membatasi risiko berakhir dengan sesuatu yang tidak Anda inginkan

Parameter apa pun yang Anda kirim saat menggunakan pernyataan yang disiapkan hanya akan diperlakukan sebagai string (walaupun mesin basis data dapat melakukan beberapa pengoptimalan sehingga parameter dapat berakhir sebagai angka juga, tentu saja). Dalam contoh di atas, jika variabel

$dbConnection = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'password');

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
_0 berisi
$dbConnection = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'password');

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
1 hasilnya hanya akan mencari string
$dbConnection = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'password');

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
2, dan Anda tidak akan mendapatkan tabel kosong

Manfaat lain menggunakan pernyataan yang telah disiapkan adalah bahwa jika Anda menjalankan pernyataan yang sama berkali-kali dalam sesi yang sama, pernyataan itu hanya akan diuraikan dan dikompilasi sekali, memberi Anda beberapa peningkatan kecepatan

Oh, dan karena Anda bertanya tentang cara melakukannya untuk penyisipan, inilah contohnya (menggunakan PDO)

$preparedStatement = $db->prepare('INSERT INTO table (column) VALUES (:column)');

$preparedStatement->execute([ 'column' => $unsafeValue ]);

Bisakah pernyataan yang disiapkan digunakan untuk kueri dinamis?

Meskipun Anda masih dapat menggunakan pernyataan yang telah disiapkan untuk parameter kueri, struktur kueri dinamis itu sendiri tidak dapat diparametrikan dan fitur kueri tertentu tidak dapat diparametrikan

Untuk skenario khusus ini, hal terbaik untuk dilakukan adalah menggunakan filter daftar putih yang membatasi kemungkinan nilai

// Value whitelist
// $dir can only be 'DESC', otherwise it will be 'ASC'
if (empty($dir) || $dir !== 'DESC') {
   $dir = 'ASC';
}

Php – Cara menampilkan kesalahan PHP

Ini selalu bekerja untuk saya

ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);

Namun, ini tidak membuat PHP menampilkan kesalahan penguraian - satu-satunya cara untuk menampilkan kesalahan tersebut adalah dengan memodifikasi php.ini Anda. ini dengan baris ini

Bagaimana cara menambahkan baris baru di Excel di PHP?

Menggunakan tag baris baru. Karakter baris baru \n atau \r\n dapat digunakan untuk membuat baris baru di dalam kode sumber. Contoh 1. PHP.

Bagaimana cara memecah garis di Excel menggunakan PHP?

Coba \n alih-alih \r\n. Windows hanya menggunakan \n untuk fungsi baris baru. – Fluffeh. .
coba kabur " dengan \" atau gunakan echo <<
Inilah mengapa saya sangat frustrasi dengan pengembang yang mencoba berpura-pura bahwa markup HTML adalah file Excel, dan kemudian khawatir bahwa itu tidak berfungsi. – Mark Baker. 30 Mei 2014 pukul 13. 58

Apakah PHPExcel sudah usang?

PHPExcel versi terakhir, 1. 8. 1, dirilis pada tahun 2015. Proyek ini secara resmi dihentikan pada tahun 2017 dan diarsipkan secara permanen pada tahun 2019 .

Mengapa PHPExcel tidak mengizinkan untuk menulis lebih dari 5000 baris?

Hampir pasti ini adalah masalah waktu habis atau memori . Satu-satunya batasan PHPExcel untuk ukuran lembar kerja adalah 65.536 baris dan 256 (IV) kolom (saat menggunakan Excel5 Writer); . Pastikan log kesalahan Anda selalu diaktifkan.