首頁  >  文章  >  後端開發  >  PHP讀取Excel檔案方法及常見問題解答

PHP讀取Excel檔案方法及常見問題解答

PHPz
PHPz原創
2023-06-09 11:41:343315瀏覽

PHP讀取Excel檔案方法及常見問題解答

Excel是一種非常普遍的電子表格檔案格式,許多業務和資料都存放在Excel檔案中。在開發過程中,如果需要將Excel檔案中的資料匯入系統中,就需要使用PHP讀取Excel檔案。本文將介紹PHP讀取Excel檔案的方法及常見問題解答。

一、PHP讀取Excel檔案方法

1.使用PHPExcel類別庫

PHPExcel是一個PHP類別庫,可以方便地讀取Excel檔案中的資料。可以透過在composer.json檔案中加入PHPExcel元件包,使用composer指令進行安裝。

安裝完成後,在程式碼中引入PHPExcel類別庫,並使用PHPExcel_IOFactory::load()方法開啟Excel文件,使用PHP的循環語句遍歷讀取其中的資料。

以下是讀取Excel檔案的範例程式碼:

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

// 這裡的路徑是Excel檔案的絕對路徑
$reader = PHPExcel_IOFactory::load('/path/to/example.xlsx');
// 取得Excel檔案中所有的工作表
$sheets = $reader->getAllSheets( );

$data = array();
// 迴圈讀取每個工作表中的資料
foreach ($sheets as $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.使用PHPOffice/PhpSpreadsheet類別庫

PhpSpreadsheet是PHPExcel的替代類別庫,它提供了更好的效能和更完善的功能。可以透過composer指令進行安裝。

以下是使用PhpSpreadsheet讀取Excel檔案的範例程式碼:

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

use PhpOfficePhpSpreadsheetIOFactory;

#// 這裡的路徑是Excel文件的絕對路徑
$reader = IOFactory::createReaderForFile('/path/to/example.xlsx');
// 打開Excel文件,讀取所有數​​據到記憶體中
$spreadsheet = $reader->load('/path/to/example.xlsx');

$data = array();
// 迭代所有工作表和行
foreach ($spreadsheet->getActiveSheet()->getRowIterator() as $row) {

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

}

#var_dump($data);

二、常見問題解答

1.如何處理Excel中的空格?

Excel表格中經常會出現不必要的空格,需要在讀取資料時處理。可以使用trim()函數來去除字串兩端的空格。

以下範例程式碼展示如何在讀取Excel資料時移除空格:

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

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

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

}

var_dump($data);

2.如何處理Excel中的日期?

Excel中的日期值實際上是一個數字,需要在讀取資料後進行格式化。可以使用PHP的date()函數來將數字轉換為日期格式。

以下是範例程式碼:

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

$reader = PHPExcel_IOFactory::load('/path/to/example .xlsx');
$data = array();
foreach ($reader->getActiveSheet()->getRowIterator() as $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.如何處理Excel中的數字格式?

Excel中的數字值可能帶有千位分隔符號、小數位數等格式,需要在讀取資料後進行格式化。可以使用PHP的number_format()函數來格式化數字。

以下是範例程式碼:

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

$reader = PHPExcel_IOFactory::load('/path/to/example .xlsx');
$data = array();
foreach ($reader->getActiveSheet()->getRowIterator() as $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);

以上就是PHP讀取Excel檔案方法及常見問題解答的內容。透過使用PHPExcel或PhpSpreadsheet類別庫可以方便地讀取Excel檔案數據,同時需要注意處理Excel中的空格、日期和數字格式。

以上是PHP讀取Excel檔案方法及常見問題解答的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn