一般的なホームページ作成の知識はありますが、
PHP MySQLの知識はありません。
会社で使っているシステムは以前プログラマーに作成してもらいました。
プログラマーと連絡が取れなくて、困っています。
システムではサイト上で商品を購入されると、
サーバーに注文リストが作成されます。
私たち従業員はブラウザーから、システム用のコントロールパネルを介して、
注文リストを参照します。
個々の注文リストを開くと
「エクセルに出力」というボタンがあり、
押すとPC上のエクセルが起動して、帳票が作成されます。
この流れに問題はないのですが、
「出力されるエクセルファイル」で使われている“雛型”を修正したいのです。
雛型(ファイル)が、サーバーのどこに置いてあるか不明です。
ファイルではなく、プログラム(マクロ?)として、どこかに格納されているのでしょうか?
または、ファイルの拡張子xlsで検索すれば良いのでしょうか?
アドバイスでも結構です。
「こんんば場所に、こんな型で置かれてるはず」「こうやって検索して」等々
何かあれば、是非教えてください。よろしくお願いします。
サーバー上で動いているファイル一式はありますか?
PHPからExcelを操作するライブラリはいくつかありますので
おっしゃっている「xls」や「xlsx」を検索したり
PHPのファイル内をGrep機能を使って「Excel」で検索してみてください。
あるいはデータだけ送ってクライアントで生成してるってことではないですよね?
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
ご回答ありがとうございます。
回答の通りでした。
>addWorksheet メソッドを呼び出しているPHPスクリプト
このファイルが見つかりました。
すでに書き込まれているテキストは編集できそうですが、
セルや行を加えたり、削除したりするには、プログラムのルールを書き込まなければならないようです。
値を抽出してきたり、計算式を加える必要はなく
単純にセルを加えたり、行の高さを調整したりしたいのですが、
参考になるサイトがあれば是非教えていただきたいです。
この位であれば、私にもできるかと・・。
下記サイトの「書式の設定」を参考にしてください。
http://www.phpbook.jp/pear/pear_spreadsheet_excel_writer/
該当の行のデータが書かれている部分の
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/
こちらも噛み砕いて書かれていると思います。
もしphpのソースの中に直書きしてあれば、phpのソースをダウンロードして、grepして修正ですね。mysqlのデータベースに入っている場合は、知識のある方でないと、修正できないと思います。
>値を抽出してきたり、計算式を加える必要はなく
>単純にセルを加えたり、行の高さを調整したりしたいのですが、
行の高さを調整程度は簡単にできるかもしれませんが、ある程度の知識がないとセルを加えるのは無理だと思います。
■
イメージ的にはひな形(xls)ファイルがないというか、新規のEXCELシートに
1からマクロで、行幅やセルの属性、データの設定などを作成していっているという感じだと思います。
マクロの部分にすべての情報が書かれている状態で、これをカスタマイズするという作業は
EXCELだけに閉じていたとしても面倒な作業なのがわかるかと思います。
で、今回はマクロでなくてその作業をPHPのコードの中ですべてやっているということです。
このパターンで、セル追加とか列を追加すれば、位置がずれたりするので見直しがかなり必要となるはずです。
■
1.他のエンジニアに修正を依頼する
2.出力されたEXCELシートから、別のEXCELマクロなどでデータのみを読み取って、新規の帳票を作成する
3.CSV出力などのデータだけ取得する機能があればそれを使用して、EXCELマクロなどで読み取って帳票作成する
いろいろ方法はあると思いますが、EXCELマクロが得意なら、2,3で逃げることが可能だと思います。
システム全体にPHP Smarty というものが使われているようです。
2012/12/23 16:37:12Grep機能で検索してみたら、色々と出てきました。確認してみます。
>データだけ送ってクライアントで生成
ブラウザ上のインターフェースで、[export to Excel]というリンクをクリックすると、データの入れ込まれた、エクセルファイルが“ダウンロード”されます。(Chrome の場合)。私たちはExcelファイルをプリントアウトしています。
Grep検索したところ、下記ファイルが見つかりました。
2012/12/23 16:51:10更に検索してみようと思いますが、
雛型がどこにあるか、どんな形で埋め込まれているのか、もし
お分かりになれば、ぜひアドバイスをいただければと思います。
お願いします。
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