Windows2000Server

Apache PHPが動作しております。


\\サーバー名\Apache Group\Apache2\cgi-bin\XXX.xls
にXXX.xlsが保存されています。

http://サーバー名/cgi-bin/XXX.xls

XXX.xlsのB列、3行に対して、数値型のデータをユーザーから入力し、XXX.xlsにデータを保管する
PHPを作成していのですが、どのようにすればいいでしょうか?



回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/10/16 10:00:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:TRTr No.1

回答回数52ベストアンサー獲得回数13

ポイント35pt

素のPHPではそのままではExcel形式で直接データを扱うことはできません。

クラスかライブラリが必要となります。


PHPExcel

Dl http://devzone.zend.com/node/view/id/1726

解説 http://c-brains.jp/blog/wsg/09/09/10-130907.php

DLしてサーバにインストール。Pear - OLEが必須。


もしくはPEARのSpred Sheet Excel Writer

http://phpspot.net/php/pgExcel%8C%60%8E%AE%82%CC%83t%83@%83C%83%...


導入できれば読み書きの例は上記サイトにあります。


PEARとはPHP用のライブラリ管理ツールで

ライブラリのダウンロード、インストール、アップデート、アンインストールを

簡単に行える環境で、PHPのおまけについてます。

http://phpspot.net/php/pgPear%82%C9%82%C2%82%A2%82%C4.html


レンタルサーバなどではPEARが直接使えない環境もあります。

その場合ライブラリのインストールやパスの指定を

全て手で行う必要があり、ちょっと面倒です

http://peardoc.xole.net/installation.manually.html

PEARが使えるか使えないかはサーバの業者/管理者にお問い合わせください。


xlsファイルを直接扱うのはExcel以外には結構難しいです。

csvで保存すればテキストエディタでもExcelでも開けます。

保存だけではなくデータとして処理するならsqliteなどデータベースのほうが便利です。

このふたつはPHPに標準で機能を持っています。(PDO::sqliteはPHP5.1以降)

どうしてもExcelのシートに直接書く必要があるかどうか

検討されることをお薦め致します。

id:rouge_2008 No.2

回答回数595ベストアンサー獲得回数351

ポイント35pt

以下の記事で紹介されていますが、「Excel_Reviser」を使用してはいかがでしょうか?

Biff8(EXCEL97、2000、XP、2003)形式のxlsファイルの読み書きが出来ます。

http://flex.ranpe.net/?p=358

ユーザーが入力したデータを書き込みたいのでしたら、フォームを使用して送信したデータを以下のようなphpで受け取って処理すると良いです。

※フォームは別途作成してください。m(__)m

http://www.standpower.com/php_form.html

<?php

require_once('reviser.php');
$reviser=NEW Excel_Reviser;

// EUC以外で作成する場合に設定。※例はSJISにする場合です。
$reviser->setInternalCharset('SJIS');

// フォームから送信されたデータを格納します。
// ※ここではline1,line2,line3で取得するようにしていますので、フォームの各項目名「name」に「line1」「line2」「line3」を指定します。
$row1 = $_POST['line1'];
$row2 = $_POST['line2'];
$row3 = $_POST['line3'];

$reviser->addString(0,0,1, $row1); //1枚目のシートの1行目2列目
$reviser->addString(0,1,1, $row2); //1枚目のシートの2行目2列目
$reviser->addString(0,2,1, $row3); //1枚目のシートの3行目2列目

// EXCELの読み込みと出力にエラー発生時の処理を追加※例は上書きする場合です。
// 上書きしたくない場合は違うファイル名にしてください。
		$reviser->setErrorHandling(1);
		$result=$reviser->reviseFile('sample.xls', 'sample.xls', './');
		if ($reviser->isError($result)){
			$errmes=$result->getMessage();
		} else {
			echo "正常に書き込まれました。<br>\r\n";
		}
?>

http://chazuke.com/?page_id=126

※ダウンロードするにはフォーラムに登録する必要があります。

Excel2007形式形式のファイルを読み書きしたい場合は、以下の記事で紹介されている「PHPExcel」を使用してください。

http://journal.mycom.co.jp/articles/2009/03/06/phpexcel/index.ht...

  • id:Mook
    http://d.hatena.ne.jp/saicologic/20080606/1212715767
    のあたりが参考になりませんか。
  • id:rouge_2008
    すみません。一部間違いがありました。

    数値ということですので、「addString」を「addNumber」に修正してください。
    ※先に投稿したコメントは、勘違いだったので削除しました。
  • id:Gmzho
    みなさんありがとうござます。
    様々なご意見を頂きまして、実際に確認後コメントします。
    取り急ぎですが

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません