ホームページ > php教程 > php手册 > PHP4 の COM 関数 (Windows) - WORD ドキュメントの読み取りと書き込みの例があります。 (後半)

PHP4 の COM 関数 (Windows) - WORD ドキュメントの読み取りと書き込みの例があります。 (後半)

WBOY
リリース: 2016-06-21 09:12:59
オリジナル
1123 人が閲覧しました

ウィンドウ|ワード

MS Excel での PHP4 COM 関数の使用
上記の Word の例と同様に、Visual Basic Editor の Excel 用 ObjectBrowser を利用してコードを学習してください。

#使用するワークブックとそのシートを設定します。この例では、
#Excel インストールに付属する次のスプレッドシートを使用します: SOLVSAMP.XLS

$workbook = "C:Program FilesMicrosoft officeOfficeSamplesSOLVSAMP.XLS";
$sheet = "Quick Tour";

#スプレッドシートをインスタンス化するComponent.
$ex = new COM("Excel.sheet") または Die ("Did not connect");

#アプリケーション名とバージョンを取得する
print "アプリケーション名:{$ex->Application->値}
" ;
print "読み込まれたバージョン: {$ex->Application->version}
";

#使用したいワークブックを開きます。
$wkb = $ex->application->Workbooks->Open($workbook) or Die ("Did not open");

#コピーを作成
$ex->Application->ActiveWorkbook->SaveAs("Ourtest");  
#$ex->Application->Visible = 1; #コメントを外して Excel を表示します。

# 新しいシートのセルの読み取りと書き込みを行います
# セル E11 (第 4 四半期の広告) を読み取りたいです
$sheets = $wkb->Worksheets($sheet );    #シートを選択します
$sheets->activate;                 #アクティブ化します
$cell = $sheets->Cells(11,5) ;    #セル(行列番号)を選択
$cell->activate;                #セルをアクティブ化します
print "Old Value = {$cell->value}
";    #セルの値を出力します:10000
$cell->value = 15000;            #15000 に変更します
print "新しい値 = {$cell->value}
";#新しい値を出力=15000

#最終的には、新しい値でシートを再計算します
$sheets-> ;計算します;            #計算する場合にのみ必要です。オプションは手動です
#そして総コストへの影響を確認してください(セルE13)
$cell = $sheets->Cells(13,5) ;    #セルを選択します (行 列番号)
$number = Number_format($cell->value);
print "新しい合計コスト =$$number - 以前は $47,732 でした。
";
#$57,809 を出力する必要があります。広告は
#セル式の企業諸経費に影響します。

#Excelの組み込み関数の使用例:
#関数: PMT(パーセント/12か月、支払い回数、ローン金額)
$pay = $ex->アプリケーション->pmt(0.08/12,10,10000);
$pay = sprintf("%.2f",$pay);
print "$10,000 のローンの月々の支払い @ 金利 8% /10 か月: $ $pay
";
#月々の支払い = $ -1,037.03 を印刷する必要があります

#必要に応じて、変更したワークブックを保存します
$ex->Application->ActiveWorkbook->SaveAs("Ourtest");                      
#質問せずにすべてのワークブックを閉じます
$ex->application->ActiveWorkbook->Close("False");    
設定を解除 ($ex);

?>
この例では、Excel COM と PHP を使い始めることができます。もちろん、使用できるオブジェクトは他にもたくさんあります。主要な関数の OOP ラッパーを作成すると、Excel オブジェクトへのアクセスがさらに簡単になります。
Adobe Distiller での PHP COM の使用
この最後の例は、MS 以外のプログラム用です。プログラムが PostScript ドキュメントを生成した場合、それを PDF ドキュメントに変換 (Distill it) すると興味深いかもしれません。 Adobe には、Windows バージョンの Distiller というプログラムがあり、次のコードでインスタンス化できます:

$pdf = 新しい COM("pdfdistiller.pdfdistiller.1");

?>
特に Distiller のドキュメント (Adobe のテクニカル ノート #5158) で「pdfdistiller」と呼ばれている場合、OLE 識別子名は明確ではないことに注意してください。
ドキュメントを抽出する主な方法は次のとおりです:

$pdf->FileToPdf ($psfile, strOutputPDF '', strJobOptions "");    

?>
$psfile は PostScript ファイルの名前、strOutputPDF は出力 PDF ファイルの名前です。 StrJobOptions は、Distiller のパラメーター ファイルの名前です。メソッドの最後の 2 つのパラメーターを空白のままにして、同じ名前 (PDF ファイルの PS ファイル) を使用し、デフォルトのジョブ オプション ファイルを使用することができます。例:

$pdf->FileToPdf ($psfile, "", "");
#$psfile は Myfile.ps で、結果ファイルは Myfile.pdf になります

?>
Distiller で使用できるメソッドとプロパティは他にもあります。興味がある場合は、Adobe のテクニカル ノートを参照してください。
注意事項/考えられる問題
コードにエラーがある場合、オブジェクトをインスタンス化し、タイムアウトになる前にプログラムが終了しない可能性があります。さらに悪いことに、アプリケーションが保持的にインスタンス化される可能性があります。その結果、いくつかのコピーがプログラム リストに存在し、問題を修正した後に干渉する可能性があります。解決策: バグを修正した後、再起動する前にプログラム リスト内のすべてのインスタンスをクリーンアップ ( およびタスクの終了) します。同じ理由で、コードの最後では必ずアプリケーションを閉じて、インスタンスのリンクを解除してください。
com_get と com_set でいくつかの奇妙な現象が発生する可能性があります。例: $Version = Com_get($instance->Application,"Version"); Wordでは動作しますが、Excelではエラーが発生します。
一部のオブジェクトは PHP4 によってインスタンス化されません。これらのオブジェクトには、PHP4-COM がサポートしていないカスタム インターフェイスが必要であるようです。
なぜそれを使用するのですか?
これら 3 つの例がコツを示してくれれば幸いです。 PHP COM を使用すると、PHP スクリプト内で多くの Windows プログラムに接続できます。コードは ASP よりも単純で、PHP の他の強力なデータベース機能と統合できます。 Microsoft は、COM+ (Combine COM with Microsoft Transaction Server MTS)、ADO、OLE DB、OWC、Windows DNA など、さまざまな名前やアーキテクチャで COM テクノロジをあらゆる場所で販売しています。現在、PHP と Apache は連携してオープン ソースを提供しています。この混乱の解決策。
http://phpclasses.upperdesign.com/browse.html?package=86
--Alain
追記: COM インターフェイスを使用した EXCEL クラスについては、次のサイトを参照してください:



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート