ホームページ バックエンド開発 PHPチュートリアル PHP4 の COM 関数 (Windows 版)_PHP チュートリアル

PHP4 の COM 関数 (Windows 版)_PHP チュートリアル

Jul 21, 2016 pm 04:08 PM
com windows 関数 存在する バージョン


PHP4 の COM 関数 (Windows バージョン) 最近 Excel を mysql に変換することについて書いていて、phpx フォーラムを検索したところ、そのような投稿はありませんでしたので、次のように再投稿しました:


PHP4 (Windows バージョン)


はじめに

組み込み PHP4 の COM 関数は、win32 環境でプログラムを開発するのに非常に魅力的ですが、関連する技術文書はまだ多くありません。この記事では、MS office 2000 Word、Excel、および Adob​​e Distiller をそれぞれ扱う、PHP での COM 関数の使用方法を 3 つの例を使用して説明します。

COM テクノロジーは、数年前に Microsoft によって提案され、開発されました。この記事で言及されている関連用語は、OLE、OLE オートメーション、ActiveX、COM です。これらの単語の意味はすべて同じです

。段落。Windows アプリケーションの一部の機能を完了するためのコード (オブジェクト)。 PHP4 COM 関数は、オブジェクト インスタンスに接続し、そのメソッドとプロパティを使用できます。

以下のサンプルソースコードを使用したい場合は、私の構成を参照してください。

Windows 98 - MS Office 2000
Apache 1.3.9 Windows
PHP4.02 開発 (08-20-00) PHP4 で CGI


COM タグとして実行

それでは、始めましょう。PHP4 の COM を使用してコンポーネントをインスタンス化します、 new 演算子とオブジェクトの「OLE プログラム識別子」が必要です:


$instance = new COM("$identifier");

COM は PHP4 の予約語であるため、次のようになります。このオブジェクトの識別子をコンストラクターに渡すと、このコンポーネントのインスタンスを取得できるようになり、OOP クラスの性質に従って、そのメソッドとプロパティに簡単にアクセスできるようになります。

例:


$instance->[オブジェクト]->[メソッド1]->[メソッド2]->..->[プロパティ];

それはとても簡単です!

OOP 構造は PHP では機能しません (PHP 構文の問題により、属性の名前と値はドットや括弧などの不正な文字です)。そのため、PHP4 では 2 つの対応する関数が提供されています:


bool com_set ( class com_object, string property name, string property_value);

mixed com_get(class com_object, string property_name);

最後に、PHP4 はリモート コンピューター上にオブジェクト インスタンスを作成できる DCOM テクノロジーもサポートしています。


$Instance = new COM(string "Component name", string "remote_server_address");

?> 注: これは、PHP をセットアップするために DCOM 命令を使用しています。将来的には、PHP 開発者は Unix での DCOM のサポートを提供する予定です。

識別子、メソッド、プロパティ

識別子は次のような文字列です:

MS Word: "Word.Application" または "Word.Application.9"
MS Excel: "Excel.Application" または "Excel.Sheet"
ADOBE Acrobat: 「Exch.application」または「PdfDistiller.PdfDistiller」

最後の識別子については、正しいオブジェクト識別子を取得するのは簡単な作業ではないことを指摘しておきます。 VBA ドキュメントにアクセスできない場合は、Windows 登録テーブルを検索して HKEY_CLASSES_ROOT で検索すると、いくつかのアプリケーションの名前を取得できます。マシン上で有効なオブジェクト ID は、CLSID サブフォルダーに配置されます。

アプリケーションは通常、その COM メソッドとプロパティを説明するドキュメントを提供します。 office2000 では、プログラムを実行し、VBA エディタを開いて、オブジェクト エディタを選択できます。アプリケーション ライブラリにメソッド名または属性名を入力し、下のウィンドウでクラスまたはメンバー名を右クリックし、[ヘルプ]をクリックすると、クラスまたはメンバーの説明が表示されます。 MSDN も参照できます。 Excel の例は次のとおりです。 [url]http://msdn.microsoft.com/library/officedev/off2000/xltocobjectmodelapplication.htm[/url]


COM 関数を使用して MS Word を操作します

それでは、最初の例:


#****************************************** **** ****************
# この例は Zend サイトからのもので、少し変更されています
# Word インスタンスを開いて新しいドキュメントを作成します 役に立たない test.doc
# 「これは test2 ...」というテキストを 1 行入力します
#********************************** ************** *************

#オブジェクトをインスタンス化する

$word = new COM("word.application") or die( "Word をインスタンス化できません");

#表示バージョンを取得してマージします

print "読み込まれた Word、バージョン {$word->Version}
";

#バージョンを取得する別の方法

$testversion = com_get ($word->application,version);

print "Com_get() を使用したバージョン: $testversion";

#可視化する

$word->Visible = 1;

#新しいドキュメントを作成する
$word->Documents->Add() ;

#文字を書く

$word->Selection->TypeText("これはテストです...");

#Save

$ word->Documents[1]->SaveAs( "Useless test.doc");

#Close

$word->Quit();

ほんの少しだけ必要ですこのプログラムを読み、Word の OLE 技術文書を参照するのに数分もあれば、独自のプログラムで使用する必要のあるほぼすべての操作を学習できます。

MS Excel は PHP の COM 関数を使用しています

上記の Word の例と同様に、この例を学習する際には Excel の Visual Basic エディターでオブジェクト ブラウザーのヘルプ ドキュメントを参照する必要があります。


#ワークブックとそのシートを開きます。
#この例では、Excel インストールに付属のスプレッドシートを使用します。SOLVSAMP. Tour";

#コンポーネント オブジェクトをインスタンス化します
$ex = new COM("Excel.sheet") or Die ("接続できませんでした");

#プログラム名とバージョンを取得します
print "アプリケーション名:{ $ex->Application->value}
" ;
print "ロードされたバージョン: {$ex-> Application->version}
";

#使用できるようにワークブックを開いてください
$wkb = $ex->application->Workbooks->Open($workbook) or Die ("開かなかった");

#元のワークブックを事前に保存し、ワークブックのコピーを作成します
$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->Calculate;計算したいので手動はオプションです
#効果の合計値がわかります(セルE13グリッド)
$cell = $sheets->Cells(13,5) ; #セル(行列番号)を選択します
$ number = Number_format($cell->value);
print "新しい合計コスト =$$ 数値 - 以前は $47,732 でした。
" #計算式によると、広告は会社の経費に影響を及ぼします。ここでは $57,809 と表示されます

#Excel の組み込み関数を使用します
# PMT(パーセント/12 か月,支払い回数,ローン金額 )
$pay = $ex->application->pmt(0.08/12,10,10000); pay = sprintf("%.2f",$pay);
print "$10,000 ローン @ 8% 金利 /10 か月の月々の支払い: $ $pay
";オプション、save
$ex->Application->ActiveWorkbook->SaveAs("Ourtest" ; Excel は連携して動作します。もちろん、利用できるオブジェクトはさらに多く、自作の OOP ラッパー クラスへのアクセスは、エクセル。

PHP COM を使用して Adob​​e Distiller にアクセスします

この最後の例は MS プログラムではありません。プログラムに PostScript ファイルがある場合は、それを PDF ドキュメントに書き換える (蒸留する) ことに興味があるでしょう。Adobe には 1 つの

プログラムがあります。 Distiller と呼ばれるインスタンスを生成できます。コードは次のとおりです:


$pdf = new COM("pdfdistiller.pdfdistiller.1");

?>

注意すべき点は、OLE 識別名「pdfdistiller」が Distiller のドキュメントに記載されていることです。それは無効です。

ファイルを抽出する最も基本的な方法は次のとおりです:


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

?> この $psfile は、このファイルの名前です。 PostScript 、strOutputPDF は、出力ファイル PDF のファイル名です。 StrJobOptions は Distiller のパラメーター ファイル名です。最後の 2 つのパラメーター

はオプションであり、デフォルトでは同じ名前になります。 この PS ファイル名と PDF ファイル名は、このデフォルトの Joboptions ファイルを使用します。例:


$pdf->FileToPdf ($psfile, "", "");
#Here $psfile は Myfile.ps であり、Myfile.pdf ファイルを返します。

?>

Distiller で使用できるメソッドとプロパティは他にもあります。ご興味がございましたら、Adobe の技術ドキュメントをご参照ください。


中止/考えられる問題

コードで何か問題が発生した場合は、インスタンスを作成しても正常に閉じていない可能性があります。さらに悪いことに、アプリケーションがこのインスタンスによって保持される可能性があり、その結果、プログラム リストにアプリケーションのコピーが複数存在し、エラーを修正したとしても結果に支障をきたすことになります。解決策は、バグを修正した後、時間内にバグを解消することです

再び実行を開始する前に、タスクを使用して終了します。同じ理由で、コードの最後でもプログラムを終了し、適切なタイミングでインスタンスを削除する必要があります。

com_get と com_set の例外を処理するためのヒントがいくつかあります。例:
$Version = Com_get($instance->Application,"Version");

は Word では機能しますが、Excel ではエラーが生成されます。

PHP4 ではインスタンス化できないオブジェクトがいくつかあります。これは、このプログラムがカスタム インターフェイスを必要とするためですが、PHP4 はそれをサポートしていません。


なぜそれを使用するのですか?

これら 3 つの例が、PHP の COM を使用して PHP スクリプトで Windows 4 プログラムにアクセスできるようにするためのヒントになれば幸いです。このコードは ASP よりも単純で、他の

PHP の強力なデータベース サポート機能を統合できます。 Microsoft は、COM+ (Combine COM with

Microsoft Transaction Server MTS)、ADO、OLE DB、OWC、Windows DNA など、さまざまな名前と構造の下で、この COM テクノロジをさまざまな側面で大々的にマーケティングしています。 PHP と Apache を組み合わせることで、オープンソース ソリューションが提供されます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/314786.html技術記事最近、PHP4 (Windows 版) の COM 関数が Excel を mysql に書き込んでいるという記事を見つけて phpx フォーラムを検索しましたが、そのような投稿はありませんでした。PHP4 (Windows 版) では...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

node.js環境で403を返すサードパーティインターフェイスの問題を解決する方法は? node.js環境で403を返すサードパーティインターフェイスの問題を解決する方法は? Mar 31, 2025 pm 11:27 PM

node.js環境で403を返すサードパーティインターフェイスの問題を解決します。 node.jsを使用してサードパーティのインターフェイスを呼び出すと、403を返すインターフェイスから403のエラーが発生することがあります...

OKXトレーディングプラットフォームをダウンロードする方法 OKXトレーディングプラットフォームをダウンロードする方法 Mar 26, 2025 pm 05:18 PM

OKXトレーディングプラットフォームは、モバイルデバイス(AndroidおよびiOS)およびコンピューター(WindowsとMacOS)からダウンロードできます。 1.Androidユーザーは、公式WebサイトまたはGoogle Playからダウンロードでき、セキュリティ設定に注意を払う必要があります。 2。IOSユーザーは、App Storeからダウンロードするか、公式発表に従って他の方法を取得できます。 3.コンピューターユーザーは、対応するシステムのクライアントを公式Webサイトからダウンロードできます。インストール後、ダウンロードして登録するときは必ず公式チャネルを使用し、ログインし、セキュリティ設定を使用してください。

WindowsやLinuxファイルを同期するときに、Compare Beyond Compareがケース感度に失敗した場合はどうすればよいですか? WindowsやLinuxファイルを同期するときに、Compare Beyond Compareがケース感度に失敗した場合はどうすればよいですか? Apr 01, 2025 am 08:06 AM

compareを超えてファイルを比較して同期する問題:それ以降を使用する場合のケース感度障害...

ノード環境で403エラーを返すサードパーティのインターフェイスを回避する方法は? ノード環境で403エラーを返すサードパーティのインターフェイスを回避する方法は? Apr 01, 2025 pm 02:03 PM

ノード環境で403エラーを返すサードパーティのインターフェイスを回避する方法。 node.jsを使用してサードパーティのWebサイトインターフェイスを呼び出すと、403エラーを返す問題が発生することがあります。 �...

なぜ私のコードはAPIによってデータを返しているのですか?この問題を解決する方法は? なぜ私のコードはAPIによってデータを返しているのですか?この問題を解決する方法は? Apr 01, 2025 pm 08:09 PM

なぜ私のコードはAPIによってデータを返しているのですか?プログラミングでは、APIが呼び出すときにヌル値を返すという問題に遭遇することがよくあります。

マルチスレッドをC言語で実装する4つの方法 マルチスレッドをC言語で実装する4つの方法 Apr 03, 2025 pm 03:00 PM

言語のマルチスレッドは、プログラムの効率を大幅に改善できます。 C言語でマルチスレッドを実装する4つの主な方法があります。独立したプロセスを作成します。独立して実行される複数のプロセスを作成します。各プロセスには独自のメモリスペースがあります。擬似マルチスレッド:同じメモリ空間を共有して交互に実行するプロセスで複数の実行ストリームを作成します。マルチスレッドライブラリ:pthreadsなどのマルチスレッドライブラリを使用して、スレッドを作成および管理し、リッチスレッド操作機能を提供します。 Coroutine:タスクを小さなサブタスクに分割し、順番に実行する軽量のマルチスレッド実装。

Windowsの下のpython .whlファイルをどこからダウンロードしますか? Windowsの下のpython .whlファイルをどこからダウンロードしますか? Apr 01, 2025 pm 08:18 PM

Pythonバイナリライブラリ(.whl)のダウンロードメソッドは、Windowsシステムに特定のライブラリをインストールする際に多くのPython開発者が遭遇する困難を調査します。一般的な解決策...

Debianログを介してシステムのパフォーマンスを監視する方法 Debianログを介してシステムのパフォーマンスを監視する方法 Apr 02, 2025 am 08:00 AM

Debianシステムログ監視のマスターは、効率的な動作とメンテナンスの鍵です。システムの動作条件をタイムリーに理解し、障害をすばやく見つけ、システムのパフォーマンスを最適化するのに役立ちます。この記事では、一般的に使用されるいくつかの監視方法とツールを紹介します。 SysStat Toolkitを使用したシステムリソースの監視SysStat Toolkitは、CPUロード、メモリ使用量、ディスクI/O、ネットワークスループットなど、さまざまなシステムリソースメトリックを収集、分析、レポートするための一連の強力なコマンドラインツールを提供します。 MPSTAT:マルチコアCPUの統計。ピドスタ

See all articles