2

フォームとコントロールを含む Excel ファイルがあります。PHP を使用してゼロからフォーム、コントロール、および VBA コードを含む Excel ファイルを作成することはできないため、空の Excel ファイルをサーバーにアップロードして更新し、ユーザーにダウンロードさせることができると考えました。

PHPExcel などの非常に優れた PHP クラスがいくつかあることは知っていますが、これらのクラスが前述のようにデータを追加するかどうかはわかりません。誰かがすでにこれを行ったことがありますか?

4

5 に答える 5

6

反対方向に考えてください!

データをPHPからExcelにプッシュする代わりに、データ接続をExcelに追加して、PHPエンドポイントからデータを取得します。

適用されるかどうかはわかりませんが、実装ははるかに簡単です。

さらに、VBAを含むすべてのカスタマイズを維持しながら、Excelファイルを完全に制御できます。

そして最後に、この方向にたどり着いた場合、面倒なCOMオブジェクトの管理をすべて回避できます。

[編集]このソリューションの手順:

  1. XMLデータを公開するphpエンドポイントを構築します(私は実際にはphpの知識がありません。呼び出しyourdata.phpによってデータがXMLで生成されることを確認してください)。
  2. Excelでは、データ接続を使用して、次のXMLファイルのコンテンツを挿入します。[データ]タブ(Excel 2010を想定)、[他のソースから]、[Xmlデータのインポートから]に移動します。
  3. ウィザードに仕事をさせてください

その後、xmlソースにリンクされているリストよりもExcelにリストが表示されます。リストを右クリック/更新して最新のデータを取得します(または、開いたときに自動更新するようにデータ接続を構成します)。

于 2012-07-19T13:15:35.570 に答える
3

@SteveB私のコメントと以前のあなたの応答に加えて..以下をお読みください。

@SteveB素晴らしいアイデアのように見えます..しかし、なぜxmlを使用するのですか? xml を使用しようとしていますが、xml をテキスト ファイルに書き込む形式がわかりません。説明できますか。.csv も使用できますか? シンプルな .csv ファイルを書くのは簡単に見えるからです。ソリューション全体がどのように機能するか..私がユーザーであるとしましょう..phpページをクリックして開く人..Excelテンプレートをどこに保存する必要があるか..そしてそれがどのようにユーザーに表示されるか..別のユーザーが接続するとどうなりますか同じページなど。テンプレート ファイルにピボット テーブル、Excel マクロと VBA、画像とグラフを保持したい。– ハイタワー

@ihightower: xml は CSV よりも生成が簡単ですが (少なくとも、私の主要なプログラミング言語である .Net と C# を使用して)、これは CSV でも機能すると思います。Excel テンプレートの提供は簡単です... Excel ファイルは動的に生成されないため、静的コンテンツとして提供するだけです。– スティーブ B


私の所見..

XML と CSV

インポート用の CSV 形式は、Excel テーブル形式が必要ない場合にのみ適しています。要約すると、外部データとテーブル形式を同時に持つことができないことがわかりました。

データ接続テーブルを「テーブルとしてフォーマット」に変換すると発生するエラーは次のとおりです。

 Your selection overlaps one or more external data ranges.
 Do you want to convert the selection to a table and remove
 all external connection?

もちろん、私はそれを望んでいません..しかし、インポートデータ接続にxml形式を使用しています...テーブル形式は、このスクリーンショットのようにとどまることができます:

ファイルから Excel にインポートされた xml データ

そして、1 画面いっぱいまでスクロールすると、画面は次のようになります。列ヘッダー A、B、C が自動的にデータ ヘッダー (ISBN、日付、タイトル、...) に変換されていることがわかります。

接続された xml データを 1 画面分過ぎてスクロールする

したがって、xml ソリューションを使用する必要があります.. php を使用する方法を理解しています。しかし、約 10 列 x 20,000 行のデータでテスト目的で CSV を使用すると、非常にうまく機能します。Web サーバーからの更新も非常にうまく機能します。

すべてのピースをまとめる

チームと社内で話し合いましたが、これは本当にうまくいくと思います。現在、彼が php から生成したデータを含む Excel テンプレート レポートを配信するために、ユーザー アクションの配信とフローについてブレインストーミングを行っています。

わかりました..何が始まりますか?

  • Excel テンプレート (staff_analysis_template.xlsm など)。これには、ピボット テーブル、Excel マクロ、ボタン、画像、グラフなど、Excel ファイルに含まれるすべてのものが含まれます。
  • テンプレート ファイルには、「data」という名前のシートが 1 つあります。これは、xml または csv のインポートが最終的に行われる場所です...ファイル内のすべてのピボット テーブルとチャートですぐに利用できます。
  • ユーザーがデータをフィルター処理するためのリスト ボックスとテキスト フィールドを持つ php Web ページ..検索をクリックすると、Web ページの結果と、Excel テンプレートで同じデータを表示するためのリンクが提供されます。シート内のすべての結果データを含むファイル: データ。

サンプル データを含む Excel テンプレートを次に示します。このスクリーンショットでは、次のことがわかります。

  1. シート: php から生成された xml データが接続されて最終的に配置されるデータ。
  2. シート: 概要. ここでは、Excel のすべての数式を使用できます... データに基づくユーザーに表示されます。
  3. シート: ピボットデータに基づくピボット テーブルとチャートを作成でき、ファイルを開くと自動的に更新されます。
  4. VBAも利用できます。たとえば、ボタンを使用してデータを更新したり、その他の作業を行うことができます。

基本的に、Excel で利用できるものはすべて使用できます。結果のxmlファイルはWebサーバーに残すことができます..また、データ接続はURLでもファイルでもかまいません。

sourceFile="http://xxxxx/test_data3.csv" または

sourceFile="C:\Users\Fiaz\Documents\Magic Briefcase\Learn\excel\test_data3.csv"

ここに画像の説明を入力

把握する必要がある

まだ解明されていない部分は、これをすべてシームレスなユーザー エクスペリエンスに接続する方法です。つまり、ユーザーは最初にファイルを保存したり、手動で xml に接続したりする必要はありません。Excel テンプレートを開くだけで済みます。必要なデータと利用可能なすべての分析がすぐそこにあります。ユーザーがそれを保存する必要がある場合は、名前を付けて保存してローカル マシンにコピーします。

このシームレスなユーザー エクスペリエンスに対する私たちの考えは次のようなものです。

  1. 一意の xml データ ファイル (例: YYYYMMDDHHMMSS_username_pagename.xml) を生成し、tmp サーバー フォルダーに配置します。
  2. テンプレート ファイルを tmp サーバー フォルダーにコピーし、xml ファイルの接続を更新します (このためには、.xlsx または .xlsm ファイルを解凍する必要があります)。ファイル名とフォルダーを使用して (xl/connections.xml) の接続情報を更新します。 : YYYYMMDDHHMMSS_username_pagename.xml を圧縮し、Web 経由で .xlsm または .xlsx として配信します。

手動で段階的に試してみたところ、本当にうまくいきました。

これを本当に改善し、シンプルに保つためのアイデアをいただければ幸いです。

PHPExcel の作成者 @MarkBaker からのフィードバックが必要です:

@MarkBaker: PHPExcel に関する他の投稿のコメントを読んで、PHPExcel を使用して同じことを行うことはできないことを理解しています (つまり、元の Excel テンプレートをそのまま使用することです)。したがって、SteveB によって提案され、上記で私が詳しく説明したソリューションは、この目的に対してはるかに強力なようです。元のエクセルのテンプレートファイルはそのままに、すべてのアセット(ピボットテーブル、VBAなど)が入ったまま保管できます。サーバーには Excel も必要ありません。

したがって、この機能は、将来 PHPExcel 自体で利用できるようになると期待できますか。そうすれば、PHPExcel の第一人者自身の標準的な手法を使用することに自信を持つことができます。

私の意見では、PHPExcel は請求書タイプのレポートやその他多くのレポートに非常に役立ちますが、ピボット テーブルや複雑なチャートやコードなどを使用する必要があるビジネス インテリジェンス タイプの分析には適していません。

コメントをお寄せください..どうすればより良くできるかについて、あなたの視点から見ることに非常に興味があります.

すべてを可能な限りシンプルにしますが、シンプルにしないでください。アルバート・アインシュタイン

于 2012-11-05T06:12:45.473 に答える
2

PHPExcelで追加するのは非常に簡単です-ファイルをロードし、最後の行の後にデータを追加し、ファイルを保存します...残念ながら、フォームとVBAコードはサポートされていません。

これらを保持するには、COMを使用する必要があります。これにより、MSExcelがインストールされているWindowsサーバーに制限されます。

于 2012-07-19T13:12:47.260 に答える
1

OpenTBSは、技術的なテンプレートを使用して XLSX (または XLSM、VBA マクロを含む XLSX) ドキュメントを作成できる PHP クラス PHP です。

ワークシートへの入力は非常に簡単です。XML 構造を知っているため、フォームと VBA を編集することもできます。

ちなみにOpenTBSもDOCX、PPTX、ODT、ODS、ODPなどに対応しており…

于 2012-07-19T13:14:24.960 に答える
0

append実際に既存のExcelファイルにデータを書き込むことはできないと思います。

  • むしろ、Excelから配列にすべてのデータをロードします(PHPExcelを使用すると簡単です)。
  • 配列にデータを追加します(必要に応じてフォーマットします);
  • 新しいExcelファイルを作成し、ユーザーがダウンロードできるようにします(または元のファイルを保存します)。

これにより、追加アクションがシミュレートされます。

于 2012-07-19T13:10:21.413 に答える