XLSX ファイルの各行を PHP 配列の行にインポートすることは可能ですか?
質問する
37595 次
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 に取って代わりました。次のコードは、上記とほぼ同じですが、いくつかの小さな改善があります。
- コードを関数またはメソッドに変換します。
- ファイルタイプを自動検出します。
- null 値、フォーマット、数式の処理方法を指定する機能が追加されました。
- 最も重要なことは、デストラクタを呼び出してメモリをクリアすることです。この最後の手順がないと、大きなファイルをロードした後、常にメモリが不足していました。
/**
* 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 に答える