web-dev-qa-db-ja.com

PHPでオートフィルターを使用してExcelファイルを生成する方法は?

さて、これが私のジレンマです。

私はWordpressプラグイン Medical Marcom で、彼の米国のTwitter医師のリストを自動的に更新するために取り組んできました。基本的に、ユーザーがフォームを作成する機能を提供します。リストへの追加をリクエストできます。リクエストは管理パネルで確認できます。リクエストが追加されると、Excelファイルで利用可能になり、初期データが入力されます。最後に、特定のフィールドが1週間​​を通して自動的に更新されます。

これが問題です。

私のコードは、PHPExcelを使用してPHPでExcelファイルを生成しています。ただし、起動時にシートに単純なオートフィルターを適用する必要があります(正直なところ、大したことはわかりません。 ..誰でもExcelでオートフィルターを簡単に適用できますが、最初から利用できるようにしたいと考えています。そこで、見つけたコードを適用してみました。

$Excel->getActiveSheet()->setAutoFilter('A1:J' . $row);

$ Excelは私のPHPExcelインスタンスです。 $ rowは、データベースから出力される最後の行です。次のように、URLがクリックされ、PHPのヘッダーが出力をExcelファイルとして変換するように設定されると、ファイルがすぐに生成されます。

header("Content-type: application/vnd.ms-Excel");
header("Content-Disposition: attachment; filename=" . $file);

しかし、ファイルを開くと、オートフィルターが設定されていません...試してみました PHPExcelのWebサイトに質問を投稿してください 、応答がなかったので、ここで質問することにしました。

誰かが私が間違っているかもしれないことを知っていますか?今のところ、この問題が解決されるまで、彼は元のファイル(ただし、少し更新されています)を使用します。

14
JaidynReiman

誰かがこの質問に出くわした場合に備えて。この機能は、XLSXとXLSの両方に実装されています。

ヘッダー行を機能させるには、ヘッダー行の範囲を指定する必要があります。

$Excel->getActiveSheet()->setAutoFilter('A1:J1');
30

このリンク から、まだ実装されていないことがわかります。

まだ 作業項目 (優先度が低いので申し訳ありません)のようです。

[編集]はExcel2007で動作するようです(これを参照 作業項目 )。クライアントはどのバージョンのExcelを使用していますか?

1
JMax

PHPSpreadsheetの方がはるかに優れています 実装シート全体を自動フィルタリングする場合:

    $sheet->setAutoFilter(
        $sheet->calculateWorksheetDimension()
    );
1
Ng Sek Long