Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara membaca fail Excel dengan PHP dan jawapan kepada soalan biasa

Cara membaca fail Excel dengan PHP dan jawapan kepada soalan biasa

PHPz
PHPzasal
2023-06-09 11:41:343315semak imbas

Cara membaca fail Excel dengan PHP dan Soalan Lazim

Excel ialah format fail hamparan yang sangat biasa dan banyak perniagaan serta data disimpan dalam fail Excel. Semasa proses pembangunan, jika anda perlu mengimport data dalam fail Excel ke dalam sistem, anda perlu menggunakan PHP untuk membaca fail Excel. Artikel ini akan memperkenalkan cara membaca fail Excel dengan PHP dan menjawab soalan biasa.

1. Cara membaca fail Excel dengan PHP

1 Gunakan perpustakaan kelas PHPExcel

PHPExcel ialah perpustakaan kelas PHP yang boleh membaca data dalam fail Excel dengan mudah. Anda boleh memasangnya menggunakan arahan komposer dengan menambahkan pakej komponen PHPExcel dalam fail composer.json.

Selepas pemasangan selesai, perkenalkan perpustakaan kelas PHPExcel ke dalam kod, gunakan kaedah PHPExcel_IOFactory::load() untuk membuka fail Excel dan gunakan pernyataan gelung PHP untuk melintasi dan membaca data.

Berikut ialah contoh kod untuk membaca fail Excel:

require_once '/path/to/PHPExcel.php';

// Laluan di sini adalah mutlak nilai Path fail Excel
$reader = PHPExcel_IOFactory::load('/path/to/example.xlsx');
// Dapatkan semua lembaran kerja dalam fail Excel
$sheets = $reader- >getAllSheets( );

$data = array();
// Gelung untuk membaca data dalam setiap lembaran kerja
foreach ($helaian sebagai $sheet) {

// 获取当前工作表的数据行数和列数
$rowCount = $sheet->getHighestRow(); // 数据行数
$columnCount = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn()); // 数据列数

// 循环获取每行数据
for ($i = 1; $i <= $rowCount; $i++) {
    // 循环获取每列数据
    $row = array();
    for ($j = 0; $j < $columnCount; $j++) {
        // 通过坐标获取单元格数据
        $cellValue = $sheet->getCellByColumnAndRow($j, $i)->getValue();
        // 将数据存入数组
        $row[] = $cellValue;
    }
    // 将行数据存入数组
    $data[] = $row;
}

}

var_dump($data);

2 Gunakan perpustakaan kelas PHPOffice/PhpSpreadsheet

PhpSpreadsheet ialah perpustakaan kelas alternatif kepada PHPExcel, yang memberikan prestasi yang lebih baik dan banyak lagi. fungsi kesempurnaan. Ia boleh dipasang melalui arahan komposer.

Berikut ialah contoh kod untuk membaca fail Excel menggunakan PhpSpreadsheet:

require_once '/path/to/vendor/autoload.php';

gunakan PhpOfficePhpSpreadsheetIOFactory;

// Laluan di sini ialah laluan mutlak fail Excel
$reader = IOFactory::createReaderForFile('/path/to/example.xlsx');
// Buka fail Excel dan baca semua data ke dalam ingatan
$spreadsheet = $reader->load('/path/to/example.xlsx');

$data = array();
// Iterate atas semua lembaran kerja dan baris
foreach ($spreadsheet->getActiveSheet()->getRowIterator() sebagai $row) {

$rowData = array();
// 迭代所有单元格
foreach ($row->getCellIterator() as $cell) {
    // 获取单元格数据
    $cellValue = $cell->getValue();
    // 将数据存入数组
    $rowData[] = $cellValue;
}
// 将行数据存入数组
$data[] = $rowData;

}

var_dump($data);

2. Soalan Lazim

1.

Ruang yang tidak diperlukan sering muncul dalam jadual Excel dan perlu diproses semasa membaca data. Anda boleh menggunakan fungsi trim() untuk mengalih keluar ruang daripada kedua-dua hujung rentetan.

Kod contoh berikut menunjukkan cara mengalih keluar ruang semasa membaca data Excel:

require_once '/path/to/PHPExcel.php';

$reader = PHPExcel_IOFactory: : load('/path/to/example.xlsx');
$data = array();
foreach ($reader->getActiveSheet()->getRowIterator() sebagai $row) {

$rowData = array();
foreach ($row->getCellIterator() as $cell) {
    $cellValue = $cell->getValue();
    $cellValue = trim($cellValue); // 去除空格
    $rowData[] = $cellValue;
}
$data[] = $rowData;

}

var_dump($data);

2. Bagaimana untuk berurusan dengan tarikh dalam Excel?

Nilai tarikh dalam Excel sebenarnya ialah nombor dan perlu diformatkan selepas membaca data. Anda boleh menggunakan fungsi date() PHP untuk menukar nombor kepada format tarikh.

Berikut ialah contoh kod:

require_once '/path/to/PHPExcel.php';

$reader = PHPExcel_IOFactory::load('/path/to /example .xlsx');
$data = array();
foreach ($reader->getActiveSheet()->getRowIterator() sebagai $row) {

$rowData = array();
foreach ($row->getCellIterator() as $cell) {
    // 获取单元格数据
    $cellValue = $cell->getValue();
    // 如果当前单元格是日期值,则进行格式化
    if (PHPExcel_Shared_Date::isDateTime($cell)) {
        $cellValue = PHPExcel_Shared_Date::ExcelToPHP( $cellValue ); // 将数字转换为时间戳
        $dateValue = date("Y-m-d H:i:s", $cellValue); // 格式化日期
        $rowData[] = $dateValue;
    } else {
        $rowData[] = $cellValue;
    }
}
$data[] = $rowData;

}

var_dump($data);

3. Bagaimana menangani format nombor dalam Excel?

Nilai angka dalam Excel mungkin mempunyai beribu-ribu pemisah, tempat perpuluhan, dsb., yang perlu diformatkan selepas membaca data. Anda boleh menggunakan fungsi number_format() PHP untuk memformat nombor.

Berikut ialah contoh kod:

require_once '/path/to/PHPExcel.php';

$reader = PHPExcel_IOFactory::load('/path/to /example .xlsx');
$data = array();
foreach ($reader->getActiveSheet()->getRowIterator() sebagai $row) {

$rowData = array();
foreach ($row->getCellIterator() as $cell) {
    // 获取单元格数据
    $cellValue = $cell->getValue();
    // 如果当前单元格是数字值,则进行格式化
    if (is_numeric($cellValue)) {
        $cellFormat = $cell->getStyle()->getNumberFormat()->getFormatCode(); // 获取单元格格式
        $cellValue = number_format($cellValue, PHPExcel_Style_NumberFormat::toFormattedString($cellValue, $cellFormat), '.', ''); // 进行格式化
        $rowData[] = $cellValue;
    } else {
        $rowData[] = $cellValue;
    }
}
$data[] = $rowData;

}

var_dump($data);

Di atas ialah kaedah membaca fail Excel dalam PHP dan kandungan Soalan Lazim. Anda boleh membaca data fail Excel dengan mudah dengan menggunakan perpustakaan kelas PHPExcel atau PhpSpreadsheet Pada masa yang sama, anda perlu memberi perhatian kepada pengendalian ruang, tarikh dan format nombor dalam Excel.

Atas ialah kandungan terperinci Cara membaca fail Excel dengan PHP dan jawapan kepada soalan biasa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn