17

XLSX ファイルの各行を PHP 配列の行にインポートすることは可能ですか?

4

5 に答える 5

19

ここで入手できる PHPExcel を使用できます: https://phpexcel.codeplex.com/releases/view/119187

xls以下は、またはxlsx配列への読み取りに使用するものです。

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

$filename = "example.xlsx";
$type = PHPExcel_IOFactory::identify($filename);
$objReader = PHPExcel_IOFactory::createReader($type);
$objPHPExcel = $objReader->load($filename);

foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
    $worksheets[$worksheet->getTitle()] = $worksheet->toArray();
}

print_r($worksheets);

更新 / 2022-02-13:

PhpSpreadsheetは数年前から利用可能で、PHPExcel に取って代わりました。次のコードは、上記とほぼ同じですが、いくつかの小さな改善があります。

  1. コードを関数またはメソッドに変換します。
  2. ファイルタイプを自動検出します。
  3. null 値、フォーマット、数式の処理方法を指定する機能が追加されました。
  4. 最も重要なことは、デストラクタを呼び出してメモリをクリアすることです。この最後の手順がないと、大きなファイルをロードした後、常にメモリが不足していました。
/**
 * Create a multidimensional array of worksheets from a filename.
 *
 * @param mixed $nullValue Value returned in the array entry if a cell doesn't exist
 * @param bool $calculateFormulas Should formulas be calculated?
 * @param bool $formatData Should formatting be applied to cell values?
 *
 * @return array
 */
function spreadsheet_to_array($nullValue = null, $calculateFormulas = true, $formatData = false) {
    $results = [];
    $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file);
    foreach ($spreadsheet->getWorksheetIterator() as $worksheet) {
        $results[$worksheet->getTitle()] = $worksheet->toArray($nullValue, $calculateFormulas, $formatData);
    }
    // save memory
    $spreadsheet->__destruct();
    $spreadsheet = NULL;
    unset($spreadsheet);
    return $results;
}
于 2015-05-01T21:01:48.900 に答える