ホームページ  >  記事  >  バックエンド開発  >  PHP で Excel ファイルを読み取る方法とよくある質問への回答

PHP で Excel ファイルを読み取る方法とよくある質問への回答

PHPz
PHPzオリジナル
2023-06-09 11:41:343315ブラウズ

PHP Excel ファイルの読み取り方法と FAQ

Excel は非常に一般的なスプレッドシート ファイル形式であり、多くのビジネスやデータが Excel ファイルに保存されています。開発プロセス中に Excel ファイルのデータをシステムにインポートする必要がある場合は、PHP を使用して Excel ファイルを読み取る必要があります。この記事では、PHP で Excel ファイルを読み取る方法と、よくある質問への回答を紹介します。

1. PHP で Excel ファイルを読み取る方法

1. PHPExcel クラス ライブラリを使用する

PHPExcel は、Excel ファイルのデータを簡単に読み取ることができる PHP クラス ライブラリです。これは、composer.json ファイルに PHPExcel コンポーネント パッケージを追加することで、composer コマンドを使用してインストールできます。

インストールが完了したら、PHPExcel クラス ライブラリをコードに導入し、PHPExcel_IOFactory::load() メソッドを使用して Excel ファイルを開き、PHP のループ ステートメントを使用してデータを走査して読み取ります。

以下は Excel ファイルを読み取るためのサンプル コードです:

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

// ここでのパスは絶対パスです。 Excel ファイル Path
$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();
//すべてのワークシートを反復処理し、 row
foreach ($spreadsheet->getActiveSheet()->getRowIterator() as $row) {

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

}

var_dump($data);

2. よくある質問

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ファイルを読み込む方法とFAQの内容です。 PHPExcel または PhpSpreadsheet クラス ライブラリを使用すると、Excel ファイル データを簡単に読み取ることができますが、Excel でのスペース、日付、数値形式の取り扱いには注意が必要です。

以上がPHP で Excel ファイルを読み取る方法とよくある質問への回答の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。