PHPExcelなき今…利用できるのはPhpSpreadsheetのみ!だけどComposerインストールとか残念仕様…でもプラグインで利用できるのであった!

Elementorの話題じゃない!ExcelをWordPressで利用したいのだがPHPExcelってアップデートが止まってる!WordPressでExcelを活用するにはどうすりゃいんだ!

サイトのタイトルにElementorが入っている割にElementorの話題が少ないんでは…と突っ込まれそうだけど、いかにエディターとしてElementorがすぐれていてもすべての問題がElementorで解決できるわけではない!そりゃちょっとぐらいコード書くのは必要なんです!

とある会社からCSVをアップロードするんで、その内容を表示してねと言われたのが2年ほど前のお話。そん時はPHPExcelは利用せずにfgetcsvを使って事なきを得たんですが…次はCSVでなくExcelでやりたいという要望が。

ExcelファイルをPHPで利用するにはPHPExcelが有名で、過去にExcelファイルをアップロードするからPHPで表示しなさいという仕様は進めたことはあったんだけど、よくよく今現在PHPExcelを検索してみると、なななななんと!開発終わってます。

「PHPExcel - DEAD」だそうです…。

でも後継のPhpSpreadsheetがあるんですねと安心したのもつかの間…インストールはComposerで…そんなんでWordPressで使えるんか!!

PHPExcelの後継としてPhpspreadSheetが開発されており、こちらを使えばPHPとExcelとの連携は素晴らしく完璧。しかもGoogleのSpleadsheetの読み書きも可能。

しかし…インストールはComposerのみというWordPressユーザーには高いハードルが…。ComposerインストールということはWordPressもComposer使って、そのあとにPhpspreadSheetをインストールするかって…そんなんやってられない!composer.json書くなんて気が滅入る。

英語とはいえドキュメントがしっかりしてるのあんしん。しかもGoogleのSpleadsheetとの連携が可能…素晴らしく可能性を感じる!

PhpspreadSheetのプラグインを検索してみると、いがいと簡単に発見

Composer使いたくない!ってプラグインを検索してみると、あったあったよ!公式にはないけれどGithubに置かれていた。

その名も「Cbx Phpspreadsheet」。Githubからダウンロードしてインストールすると利用が可能!

公式にはないけれど、Githubで公開されている。これでWordPressを使ってExcelファイルの参照、書き込み保存が可能となる。

具体的なコードは下記を参照。
コード内で指定したファイルの内容を配列として格納できる。
今回、自分が試したのはデータ参照のみ。新規でファイルを保存したり、既存のファイルを変更したりと様々な場面で利用できる。GoogleのSpleadsheetでも利用できるので応用の範囲が広がる。

				
					// PhpSpreadSheetをWordPressで使うcbxphpspreadsheetの開始
// プラグインの有無を確認して実行 
if ( defined( 'CBXPHPSPREADSHEET_PLUGIN_NAME' ) && file_exists( CBXPHPSPREADSHEET_ROOT_PATH . 'lib/vendor/autoload.php' ) ) {
	// PhpSpreadSheetの読み込み
	require_once( CBXPHPSPREADSHEET_ROOT_PATH . 'lib/vendor/autoload.php' );

	// 初期設定 ファイルタイプ、シート名、ファイル名(サーバー内のフルパス)を指定する
  $excelFileType  = 'Xlsx';
  $excelSheetName = 'Sheet1';
  $excelFilePath  = '/home/サーバーID/独自ドメイン名/public_html/';

  // ファイルタイプ、ファイル名、シート名を設定してシートを配列に格納
  $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader( $excelFileType );
  $reader->setLoadSheetsOnly( $excelSheetName );
  $spreadSheet = $reader->load( $excelFilePath );

  // シートの内容を配列として読み込む
  $dataArray = $spreadSheet->getActiveSheet()
    ->rangeToArray(
      'A1:D20', // The worksheet range that we want to retrieve
      NULL,     // Value that should be returned for empty cells
      TRUE,     // Should formulas be calculated (the equivalent of getCalculatedValue() for each cell)
      TRUE,     // Should values be formatted (the equivalent of getFormattedValue() for each cell)
      TRUE      // Should the array be indexed by cell row and cell column
    );
}
				
			

関連の投稿

カテゴリー

タグ

お問い合わせ

当サイトの内容などで疑問・質問があればご利用ください。