Penulis asli: Podcast di Gunung Es Ketika saya melihat artikel ini, saya sangat terkejut dengan kesabaran penulis asli. Meskipun kami menggunakan beberapa dalam kehidupan sehari-hari, tidak semuanya dicantumkan oleh penulis. Saat menulis excel, saya menggunakan pir. Library, saya juga pernah menggunakan pack header, dan saya juga pernah menggunakan yang menggunakan smarty untuk sekedar mengganti xml, belum lagi csv. hehe. (Saya tidak akan berbicara tentang metode COM. Terlalu banyak yang dapat dibaca. Saya juga telah menulis artikel tentang penggunaan wps untuk menghasilkan kata, dll.)
Tapi ketika saya membaca, saya hanya menggunakan satu, saya lupa apa itu, jadi saya harus kembali dan membaca kodenya. Karena berdasarkan prinsip pinjam-meminjam, saya tidak ingat.
Alamat asli: http://xinsync.xju.edu.cn/index.php/archives/3858
Konten asli:
Baru-baru ini, karena kebutuhan proyek, saya perlu mengembangkan modul untuk mengekspor beberapa data dalam sistem ke Excel, memodifikasinya, dan kemudian mengimpornya kembali ke sistem. Saya mengambil kesempatan ini untuk melakukan penelitian mengenai hal ini, dan berikut beberapa ringkasannya.
Pada dasarnya, ada dua jenis file yang diekspor:
1: Format seperti Excel. Ini sebenarnya bukan file Excel dalam pengertian tradisional. Ini hanya karena Excel memiliki kompatibilitas yang kuat dan dapat dibuka dengan benar. Setelah memodifikasi file semacam ini dan kemudian menyimpannya, biasanya Anda akan ditanya apakah ingin mengonversinya menjadi file Excel.
Keuntungan: Sederhana.
Kekurangan: Sulit untuk menghasilkan format. Jika digunakan untuk impor, Anda perlu menulis sendiri program yang sesuai.
2: Format Excel, mirip dengan Excel, file yang dihasilkan dengan metode ini lebih mirip dengan format Excel sebenarnya.
Jika karakter kacau muncul saat mengekspor bahasa Mandarin, Anda dapat mencoba mengonversi string menjadi gb2312. Misalnya, yang berikut ini mengonversi $yourStr dari utf-8 ke gb2312:
$yourStr = mb_convert_encoding(”gb2312″, “UTF-8″, $yourStr);
Beberapa metode tercantum di bawah ini secara rinci.
1. Ekspor PHP ke Excel
1: Rekomendasi pertama adalah PHPExcel yang sangat populer, situs resminya: http://www.codeplex.com/PHPExcel
Itu dapat diimpor dan diekspor, dan dapat diekspor ke format office 2007, yang juga kompatibel dengan 2003.
Paket yang diunduh berisi dokumen dan contoh, yang dapat Anda pelajari sendiri.
Berikut adalah contoh menyalin paragraf:
kode PHP
<?php
/**
* PHPUnggul
*
* Hak Cipta (C) 2006 - 2007 PHPExcel
*
* Perpustakaan ini adalah perangkat lunak gratis; Anda dapat mendistribusikannya kembali dan/atau
* memodifikasinya berdasarkan ketentuan GNU Lesser General Public
* Lisensi sebagaimana diterbitkan oleh Free Software Foundation;
* versi 2.1 dari Lisensi, atau (sesuai pilihan Anda) versi yang lebih baru.
*
*Perpustakaan ini dibagikan dengan harapan dapat bermanfaat,
*tetapi TANPA JAMINAN APAPUN;
* KELAYAKAN UNTUK DIPERDAGANGKAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat GNU
* Lisensi Publik Umum Kecil untuk lebih jelasnya.
*
* Anda seharusnya sudah menerima salinan GNU Lesser General Public
* Lisensi bersama dengan perpustakaan ini; jika tidak, tulis ke Perangkat Lunak Gratis
* Foundation, Inc., 51 Franklin Street, Lantai Lima, Boston, MA 02110-1301 AS
*
* @kategori PHPExcel
* @paket PHPExcel
* @hak cipta Hak Cipta (c) 2006 - 2007 PHPExcel ( http://www.codeplex.com/PHPExcel )
* @license http://www.gnu.org/licenses/lgpl.txt LGPL
* @versi 1.5.0, 23-10-2007
*/
/** Pelaporan kesalahan */
error_reporting(E_ALL);
/** Sertakan jalur **/
set_include_path(get_include_path() .PATH_SEPARATOR .'../Classes/');
/** PHPExcel */
sertakan 'PHPExcel.php';
/** PHPExcel_Writer_Excel2007 */
sertakan 'PHPExcel/Writer/Excel2007.php';
// Buat objek PHPExcel baru
echo date('H:i:s') . ” Buat objek PHPExcel barun”;
$objPHPExcel = PHPExcel baru();
// Tetapkan properti
echo date('H:i:s') . ” Tetapkan propertin”;
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy(”Maarten Balliauw”);
$objPHPExcel->getProperties()->setTitle(”Dokumen Uji XLSX Office 2007”);
$objPHPExcel->getProperties()->setSubject(”Dokumen Uji XLSX Office 2007”);
$objPHPExcel->getProperties()->setDescrīption("Dokumen uji untuk Office 2007 XLSX, dihasilkan menggunakan kelas PHP.");
$objPHPExcel->getProperties()->setKeywords(”office 2007 openxml php”);
$objPHPExcel->getProperties()->setCategory(”file hasil tes”);
//Tambahkan beberapa data
echo date('H:i:s') . ”Tambahkan beberapa datan”;
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1′, 'Halo');
$objPHPExcel->getActiveSheet()->setCellValue('B2′, 'dunia!');
$objPHPExcel->getActiveSheet()->setCellValue('C1′, 'Halo');
$objPHPExcel->getActiveSheet()->setCellValue('D2′, 'dunia!');
// Ganti nama lembar
echo date('H:i:s') . ” Ganti nama lembarn”;
$objPHPExcel->getActiveSheet()->setTitle('Sederhana');
// Atur indeks lembar aktif ke lembar pertama, sehingga Excel membukanya sebagai lembar pertama
$objPHPExcel->setActiveSheetIndex(0);
// Simpan berkas Excel 2007
echo date('H:i:s') . ” Tulis ke format Excel2007n”;
$objWriter = PHPExcel_Writer_Excel2007 baru($objPHPExcel);
$objWriter->simpan(str_replace('.php', '.xlsx', __FILE__));
// Gema selesai
echo date('H:i:s') . ”Selesai menulis file.rn”;
2. Gunakan alamat pengunduhan kelas Spreadsheet_Excel_Writer pir: http://pear.php.net/package/Spreadsheet_Excel_Writer
Kelas ini bergantung pada OLE, alamat unduhan: http://pear.php.net/package/OLE
Perlu dicatat bahwa format file Excel yang diekspor relatif lama. Jika Anda menyimpannya setelah modifikasi, Anda akan ditanya apakah akan mengonversinya ke format yang lebih baru.
Namun Anda dapat mengatur formatnya, yang sangat kuat.
kode PHP
<?php
require_once 'Spreadsheet/Excel/Writer.php';
// Membuat buku kerja
$buku kerja = Spreadsheet_Excel_Writer();
// mengirim header HTTP
$buku kerja->kirim('test.xls');
// Membuat lembar kerja
$worksheet =& $workbook->addWorksheet('Lembar kerja pertama saya');
//Data sebenarnya
$lembar kerja->tulis(0, 0, 'Nama');
$lembar kerja->tulis(0, 1, 'Umur');
$lembar kerja->tulis(1, 0, 'John Smith');
$lembar kerja->tulis(1, 1, 30);
$lembar kerja->tulis(2, 0, 'Johann Schmidt');
$lembar kerja->tulis(2, 1, 31);
$lembar kerja->tulis(3, 0, 'Juan Herrera');
$lembar kerja->tulis(3, 1, 32);
// Ayo kirim filenya
$buku kerja->tutup();
?>
3: Gunakan smarty untuk menghasilkan format dukungan file XML atau HTML yang sesuai dengan spesifikasi Excel, yang merupakan solusi ekspor sempurna. Namun, file yang diekspor pada dasarnya adalah file XML. Jika digunakan untuk impor, maka perlu diproses secara terpisah.
Untuk detailnya, silakan lihat postingan rardge hero: http://bbs.chinaunix.net/viewthread.php?tid=745757
Perlu dicatat bahwa jika jumlah baris dalam tabel yang diekspor tidak pasti, yang terbaik adalah menempatkan "ss:" di templat: Hapus hal-hal seperti ExpandedColumnCount=”5″ ss:ExpandedRowCount=”21″”.
4. Gunakan fungsi paket untuk mencetak simbol pemisah kalimat yang mensimulasikan format Excel. Ini lebih dekat dengan format standar Excel. Setelah dimodifikasi dan disimpan di Office 2003, tidak ada prompt yang muncul.
Kekurangannya adalah tidak memiliki format.
kode PHP
<?php
// Kirim Tajuk
header("Pragma: publik");
header("Kedaluwarsa: 0");
header("Kontrol Cache: harus divalidasi ulang, pasca-pemeriksaan=0, pra-pemeriksaan=0");
header("Tipe Konten: aplikasi/unduhan paksa");
header("Tipe Konten: aplikasi/aliran oktet");
header("Tipe Konten: aplikasi/unduhan");;
header(”Disposisi Konten: lampiran;namafile=test.xls “);
header("Pengkodean-Transfer-Konten: biner");
//Sel Data XLS
xlsBOF();
xlsWriteLabel(1,0,"Baris pertama Excel saya");
xlsWriteLabel(2,0,"Baris excel saya yang kedua: ");
xlsWriteLabel(2,1,"Halo semuanya");
xlsEOF();
fungsi xlsBOF() {
paket gema("sssss", 0×809, 0×8, 0×0, 0×10, 0×0, 0×0);
kembali;
}
fungsi xlsEOF() {
paket gema("ss", 0×0A, 0×00);
kembali;
}
fungsi xlsWriteNumber($Baris, $Kol, $Nilai) {
echo pack("sssss", 0×203, 14, $Baris, $Kol, 0×0);
paket gema("d", $Nilai);
kembali;
}
function xlsWriteLabel($Baris, $Kol, $Nilai) {
$L = strlen($Nilai);
echo pack("sssss", 0×204, 8 + $L, $Baris, $Kol, 0×0, $L);
gema $Nilai;
kembali;
}
?>
Namun, penulis gagal saat menggunakannya pada sistem Linux 64-bit, dan semua simbol pemecah kalimat menjadi karakter yang kacau.
5. Cara menggunakan tab dan jeda baris
Karakter tab "t" memungkinkan pengguna untuk memisahkan kolom di baris yang sama, dan karakter baris baru "tn" dapat membuka baris berikutnya.
<?php
header("Tipe Konten: application/vnd.ms-execl");
header("Disposisi Konten: lampiran; nama file=myExcel.xls");
header("Pragma: tanpa cache");
header("Kedaluwarsa: 0");
/*baris pertama*/
gema "halo"."t";
gema "dunia"."t";
gema “tn”;
/*mulai dari baris kedua*/
echo “ini baris kedua”.”t”;
echo “Hai, gadis cantik”.”t”;
gema “tn”;
?>
6. Gunakan com
Jika PHP Anda dapat membuka modul com, Anda dapat menggunakannya untuk mengekspor file Excel
kode PHP
<?PHP
$namafile = “c:/spreadhseet/test.xls”;
$lembar1 = 1;
$lembar2 = “lembar2″;
$excel_app = new COM("Excel.application") atau Die ("Tidak terhubung");
print “Nama aplikasi: {$excel_app->Aplikasi->nilai}n”;
print “Versi yang dimuat: {$excel_app->Aplikasi->versi}n”;
$Workbook = $excel_app->Workbooks->Open(”$filename”) atau Die(”Tidak membuka $filename $Workbook”);
$Lembar Kerja = $Buku Kerja->Lembar Kerja($lembar1);
$Lembar Kerja->aktifkan;
$excel_cell = $Lembar Kerja->Rentang(”C4″);
$excel_cell->aktifkan;
$excel_result = $excel_cell->nilai;
cetak “$excel_resultn”;
$Lembar Kerja = $Buku Kerja->Lembar Kerja($lembar2);
$Lembar Kerja->aktifkan;
$excel_cell = $Lembar Kerja->Rentang(”C4″);
$excel_cell->aktifkan;
$excel_result = $excel_cell->nilai;
cetak “$excel_resultn”;
#Untuk menutup semua instance excel:
$Buku Kerja->Tutup;
tidak disetel($Lembar Kerja);
tidak disetel($Buku Kerja);
$excel_app->Buku Kerja->Tutup();
$excel_app->Keluar();
tidak disetel($excel_app);
?>
Contoh yang lebih baik: http://blog.chinaunix.net/u/16928/showart_387171.html
1. Impor PHP ke Excel
1: Masih menggunakan PHPExcel, situs resmi: http://www.codeplex.com/PHPExcel .
2: Gunakan PHP-ExcelReader, alamat unduh: http://sourceforge.net/projects/phpexcelreader
Contoh:
kode PHP
<?php
require_once 'Excel/reader.php';
// ExcelFile($namafile, $encoding);
$data = Spreadsheet_Excel_Reader baru();
// Atur pengkodean keluaran.
$data->setOutputEncoding('utf8′);
$data->baca('jxlrwtest.xls');
error_reporting(E_ALL^E_NOTICE);
untuk ($i = 1; $i <= $data->lembar[0]['numRows']; $i++) {
untuk ($j = 1; $j <= $data->lembar[0]['numCols']; $j++) {
echo """.$data->sheet[0]['sel'][$i][$j].""";
}
gema “n”;
}
?>
----------
Situs ini mengadopsi perjanjian hak cipta Creative Commons, yang memerlukan atribusi, non-komersial, dan konsistensi. Situs ini menerima pencetakan ulang non-komersial apa pun, tetapi harus menunjukkan bahwa itu berasal dari "Kehidupan Sederhana Paman Fatty", mempertahankan tautan aslinya, dan juga harus juga harus mempertahankan tautan aslinya. menunjukkan judul asli dan Tautan.