人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP,MySQLとエクセル関連の質問です。
一般的なホームページ作成の知識はありますが、
PHP MySQLの知識はありません。

会社で使っているシステムは以前プログラマーに作成してもらいました。
プログラマーと連絡が取れなくて、困っています。

システムではサイト上で商品を購入されると、
サーバーに注文リストが作成されます。
私たち従業員はブラウザーから、システム用のコントロールパネルを介して、
注文リストを参照します。
個々の注文リストを開くと
「エクセルに出力」というボタンがあり、
押すとPC上のエクセルが起動して、帳票が作成されます。

この流れに問題はないのですが、
「出力されるエクセルファイル」で使われている“雛型”を修正したいのです。

雛型(ファイル)が、サーバーのどこに置いてあるか不明です。
ファイルではなく、プログラム(マクロ?)として、どこかに格納されているのでしょうか?
または、ファイルの拡張子xlsで検索すれば良いのでしょうか?

アドバイスでも結構です。
「こんんば場所に、こんな型で置かれてるはず」「こうやって検索して」等々
何かあれば、是非教えてください。よろしくお願いします。

●質問者: peach555
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● degucho
●20ポイント

サーバー上で動いているファイル一式はありますか?
PHPからExcelを操作するライブラリはいくつかありますので
おっしゃっている「xls」や「xlsx」を検索したり
PHPのファイル内をGrep機能を使って「Excel」で検索してみてください。
あるいはデータだけ送ってクライアントで生成してるってことではないですよね?


peach555さんのコメント
システム全体にPHP Smarty というものが使われているようです。 Grep機能で検索してみたら、色々と出てきました。確認してみます。 >データだけ送ってクライアントで生成 ブラウザ上のインターフェースで、[export to Excel]というリンクをクリックすると、データの入れ込まれた、エクセルファイルが“ダウンロード”されます。(Chrome の場合)。私たちはExcelファイルをプリントアウトしています。

peach555さんのコメント
Grep検索したところ、下記ファイルが見つかりました。 更に検索してみようと思いますが、 雛型がどこにあるか、どんな形で埋め込まれているのか、もし お分かりになれば、ぜひアドバイスをいただければと思います。 お願いします。 lib\pear\Spreadsheet\Excel\reader.php lib\pear\Spreadsheet\Excel\Writer.php lib\pear\Spreadsheet\Excel\Writer\BIFFwriter.php lib\pear\Spreadsheet\Excel\Writer\Format.php lib\pear\Spreadsheet\Excel\Writer\Parser.php lib\pear\Spreadsheet\Excel\Writer\Validator.php lib\pear\Spreadsheet\Excel\Writer\Workbook.php lib\pear\Spreadsheet\Excel\Writer\Worksheet.php

2 ● oil999
●20ポイント

Smartyの機能ではなく、PEAR :: Package :: Spreadsheet_Excel_Writer が利用されているようです。
http://pear.php.net/package-info.php?pacid=156

下記サイトを参考に、addWorksheet メソッドを呼び出しているPHPスクリプト(拡張子php)を探してください。おそらくそのスクリプトの中でExcelのデータ形式を定義しているはずです。
http://www.doyouphp.jp/sample/sample_ora_excel_pear.shtml


peach555さんのコメント
ご回答ありがとうございます。 回答の通りでした。 >addWorksheet メソッドを呼び出しているPHPスクリプト このファイルが見つかりました。 すでに書き込まれているテキストは編集できそうですが、 セルや行を加えたり、削除したりするには、プログラムのルールを書き込まなければならないようです。 値を抽出してきたり、計算式を加える必要はなく 単純にセルを加えたり、行の高さを調整したりしたいのですが、 参考になるサイトがあれば是非教えていただきたいです。 この位であれば、私にもできるかと・・。

oil999さんのコメント
下記サイトの「書式の設定」を参考にしてください。 http://www.phpbook.jp/pear/pear_spreadsheet_excel_writer/

3 ● KeyKey
●20ポイント

該当の行のデータが書かれている部分の
setRowのパラメータを変更することで行の高さを変えることができます。

$hoge->setRow(変更したい行数, 高さの値);

変更したい行数は0から数えてください。高さの値は恐らくポイントです。
http://pear.php.net/manual/ja/package.fileformats.spreadsheet-excel-writer.spreadsheet-excel-writer-worksheet.setrow.php

列の幅などを変えるのは「setColumn」になります。

セルの設定をするには基本的に「write」を使えばよいと思います。

$hoge->write(セルの行数, セルの列数, '書き込みたいテキスト');
//Excelの数式を使ってA1からA5の合計をA6に書く場合
$hoge->write(5, 0, '=SUM(A1:A5)');

http://pear.php.net/manual/ja/package.fileformats.spreadsheet-excel-writer.intro.php

使い方ですが基本的にドキュメントを確認するのが一番だと思います。(日本語訳もされてるし)
http://pear.php.net/manual/ja/package.fileformats.spreadsheet-excel-writer.php
後は検索で出てきた
http://www.phpbook.jp/pear/pear_spreadsheet_excel_writer/
こちらも噛み砕いて書かれていると思います。


4 ● pigmon88
●20ポイント

もしphpのソースの中に直書きしてあれば、phpのソースをダウンロードして、grepして修正ですね。mysqlのデータベースに入っている場合は、知識のある方でないと、修正できないと思います。


5 ● taroe
●20ポイント

>値を抽出してきたり、計算式を加える必要はなく
>単純にセルを加えたり、行の高さを調整したりしたいのですが、

行の高さを調整程度は簡単にできるかもしれませんが、ある程度の知識がないとセルを加えるのは無理だと思います。


イメージ的にはひな形(xls)ファイルがないというか、新規のEXCELシートに
1からマクロで、行幅やセルの属性、データの設定などを作成していっているという感じだと思います。

マクロの部分にすべての情報が書かれている状態で、これをカスタマイズするという作業は
EXCELだけに閉じていたとしても面倒な作業なのがわかるかと思います。

で、今回はマクロでなくてその作業をPHPのコードの中ですべてやっているということです。

このパターンで、セル追加とか列を追加すれば、位置がずれたりするので見直しがかなり必要となるはずです。


1.他のエンジニアに修正を依頼する
2.出力されたEXCELシートから、別のEXCELマクロなどでデータのみを読み取って、新規の帳票を作成する
3.CSV出力などのデータだけ取得する機能があればそれを使用して、EXCELマクロなどで読み取って帳票作成する

いろいろ方法はあると思いますが、EXCELマクロが得意なら、2,3で逃げることが可能だと思います。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ