PHP で Excel を処理する手順の紹介
遭遇した問題
日常業務では、データベース テーブルを Excel にエクスポートしたり、Excel をデータベース テーブルにインポートしたりする必要がよくあります。この要件はずっと前から実現されており、輸出入を容易にするために、Brothers www.lampbrother.net は記録として 2 つの方法に分けています。
コードの実装
phpexcelクラスライブラリへの参照
phpexcelは強力なExcel処理能力を持っており、packagistで何百万回もダウンロードされていますが、正直に言うと、データ量が大きい場合のExcelの処理速度はまだ非常に遅いです。慎重に使用してください。 packagegist からダウンロードするか、composer require phpoffice/phpexcel を使用して直接ダウンロードした後、phpexcel を使用できるようになります。
Excel へのエクスポート
ほとんどの場合、Excel のエクスポートでは、実際には 2 桁の配列がテーブルに変換されます。
名前空間 PHPExcel を使用します
/**
*/
function exportExcel($name, $ret_data){
$objPHPExcel = new PHPExcel();
//テーブルを設定します
$objPHPExcel->get Properties( )-> setCreator($name) ->setLastModifiedBy($name) ->setTitle("Office 2007 XLSX テスト ドキュメント") ->setSubject("Office 2007 XLSX テスト ドキュメント")
->setDescription("Office 2007 のテスト ドキュメントXLSX、PHP クラスを使用して生成。」)
_data as $key => $row ) {
use using . $objPHPExcel->setActiveSheetIndex( 0)->setCellValue( Cell::stringFromColumnIndex($i). ($num) ), $value2);
jPHPExcel->getActiveSheet()->setTitle ($name); Content-Type: application/vnd.ms-excel');
header("Content-Disposition:attachment;filename) ={$name}.xls");
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') .
header('Cache-Control: キャッシュ、必須再検証'); // HTTP /1.0
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5 ');
$objWriter->save('php://output'); 形式に準拠する必要があります。
関数 getRows($inputFileName)
{
if (!file_exists($inputFileName)) {
throw new Exception("ファイルが存在しません");
}
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//总列数
$row = 1;
$curr = array();
while ($row for ($col = 0; $col $value = str_replace(array("n", "nr", "r"), "", $objWorksheet->getCellByColumnAndRow($col, $row)->getValue());
$curr[$row][] = $value;
}
$row++;
}
array_shift($curr);//第一行一般は字段名(Excel中列の标题),导入時要移除
return $curr;
}
その他の
出力時に保存される形式は xlsx ですが、他の形式に変更するには、別のパラメータを入力する必要があります。現在のシートがアクティブシートであることを確認するか、プログラム中にシート名に基づいてシートを選択します。