Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menukar csv ke xls dalam php
Semasa proses pembangunan sebenar, kami mungkin perlu menukar data dalam format CSV ke dalam format Excel (XLS atau XLSX). Kerana fail CSV hanyalah fail teks ringkas dan fail Excel menyokong lebih banyak fungsi, seperti penapisan data, pengisihan, paparan carta, dsb. PHP menyediakan perpustakaan fungsi yang berkuasa untuk memproses CSV dan Excel Berikut akan memperkenalkan cara menggunakan PHP untuk menukar fail CSV kepada fail Excel.
PHP menyediakan fungsi fgetcsv() untuk membaca fail CSV dan menghuraikan setiap baris ke dalam tatasusunan . Berikut ialah contoh membaca fail CSV:
$csvFile = 'data.csv'; if(!file_exists($csvFile)) { die("File not found"); } $fp = fopen($csvFile, 'r'); if(!$fp) { die("Error opening file"); } $data = array(); while($row = fgetcsv($fp)) { $data[] = $row; } fclose($fp);
Kod ini mula-mula menyemak sama ada fail CSV wujud, kemudian membuka fail dan menggunakan fungsi fgetcsv() untuk membaca setiap baris fail dan menyimpan keputusan dalam tatasusunan.
PHPExcel ialah sambungan PHP yang sangat berkuasa untuk mencipta dan memanipulasi fail Excel. Kami boleh memuat turun PHPExcel dan memasukkannya ke dalam projek PHP kami. Kaedah untuk mencipta fail Excel kosong adalah seperti berikut:
require_once 'PHPExcel.php'; $objPHPExcel = new PHPExcel(); $objPHPExcel->getActiveSheet()->setTitle('Sheet1');
Kod ini menggunakan PHPExcel untuk mencipta fail Excel kosong dan menetapkan lembaran kerja lalai.
Menggunakan kaedah setCellValue() dalam PHPExcel, kami boleh mengimport data dalam fail CSV ke dalam Fail Excel. Berikut ialah contoh kod:
require_once 'PHPExcel.php'; $csvFile = 'data.csv'; if(!file_exists($csvFile)) { die("File not found"); } $csvData = file_get_contents($csvFile); $data = array_map("str_getcsv", preg_split('/\r*\n+|\r+/', $csvData)); $objPHPExcel = new PHPExcel(); $objPHPExcel->getActiveSheet()->setTitle('Sheet1'); $row = 1; foreach($data as $fields) { $col = 0; foreach($fields as $value) { $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value); $col++; } $row++; }
Kod ini mula-mula menggunakan fungsi file_get_contents() untuk membaca kandungan fail CSV, dan kemudian menggunakan fungsi preg_split() untuk membahagikan kandungan fail kepada dua tatasusunan -dimensi. Seterusnya, kami menggunakan fungsi setCellValueByColumnAndRow() PHPExcel untuk mengimport data ke dalam fail Excel.
Akhir sekali, kami menggunakan kaedah save() PHPExcel untuk menyimpan fail dalam format XLS atau XLSX. Berikut ialah kod contoh lengkap:
require_once 'PHPExcel.php'; $csvFile = 'data.csv'; if(!file_exists($csvFile)) { die("File not found"); } $csvData = file_get_contents($csvFile); $data = array_map("str_getcsv", preg_split('/\r*\n+|\r+/', $csvData)); $objPHPExcel = new PHPExcel(); $objPHPExcel->getActiveSheet()->setTitle('Sheet1'); $row = 1; foreach($data as $fields) { $col = 0; foreach($fields as $value) { $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value); $col++; } $row++; } $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('data.xls');
Kod ini mengimport data ke dalam objek PHPExcel dan menggunakan kaedah createWriter() PHPExcel_IOFactory untuk menjana objek Excel5Writer untuk menyimpan objek PHPExcel dalam dokumen format XLS. Perlu diingat bahawa untuk menggunakan format Excel2007 (XLSX), anda perlu menukar Excel5 kepada Excel2007.
Ringkasan
Di atas ialah proses lengkap untuk menukar fail CSV kepada fail Excel. Mula-mula baca fail CSV, kemudian import data ke dalam objek PHPExcel dan simpan objek PHPExcel sebagai fail Excel. Perlu diingat bahawa dalam aplikasi sebenar, kami mungkin perlu melakukan pengesahan format dan pembersihan pada data yang diimport untuk memastikan integriti dan ketepatan data.
Atas ialah kandungan terperinci Bagaimana untuk menukar csv ke xls dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!