PHP,MySQLとエクセル関連の質問です。

一般的なホームページ作成の知識はありますが、
PHP MySQLの知識はありません。

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

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

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

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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/12/23 12:38:37
  • 終了:2012/12/30 12:40:03

回答(5件)

id:degucho No.1

degucho回答回数253ベストアンサー獲得回数672012/12/23 15:56:16

ポイント20pt

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

id:peach555

システム全体にPHP Smarty というものが使われているようです。
Grep機能で検索してみたら、色々と出てきました。確認してみます。

>データだけ送ってクライアントで生成

ブラウザ上のインターフェースで、[export to Excel]というリンクをクリックすると、データの入れ込まれた、エクセルファイルが“ダウンロード”されます。(Chrome の場合)。私たちはExcelファイルをプリントアウトしています。

2012/12/23 16:37:12
id: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

2012/12/23 16:51:10
id:oil999 No.2

oil999回答回数1728ベストアンサー獲得回数3202012/12/23 17:33:43

ポイント20pt

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

id:peach555

ご回答ありがとうございます。
回答の通りでした。

>addWorksheet メソッドを呼び出しているPHPスクリプト

このファイルが見つかりました。

すでに書き込まれているテキストは編集できそうですが、
セルや行を加えたり、削除したりするには、プログラムのルールを書き込まなければならないようです。
値を抽出してきたり、計算式を加える必要はなく
単純にセルを加えたり、行の高さを調整したりしたいのですが、
参考になるサイトがあれば是非教えていただきたいです。
この位であれば、私にもできるかと・・。

2012/12/23 17:38:50
id:oil999

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

2012/12/23 20:03:43
id:KeyKey No.3

KeyKey回答回数29ベストアンサー獲得回数42012/12/23 19:56:54

ポイント20pt

該当の行のデータが書かれている部分の
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/
こちらも噛み砕いて書かれていると思います。

id:pigmon88 No.4

pigmon88回答回数501ベストアンサー獲得回数252012/12/23 20:15:43

ポイント20pt

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

id:taroe No.5

taroe回答回数1099ベストアンサー獲得回数1322012/12/30 04:30:18

ポイント20pt

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

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


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

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

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

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


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

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

  • id:KeyKey
    その出力されるエクセルファイルはcsvやtsvなどの形式ですか?それともHTMLをエクセルファイルとして開いたものですか?
    ファイルを保存してテキストエディタなどで開いてみてください。

    通常のエクセルファイルの場合は
    http://pear.php.net/manual/ja/package.fileformats.spreadsheet-excel-writer.php
    この辺を使っているかも知れません。
  • id:peach555
    出力される(というかダウンロードされる)エクセルファイルは、いつも使っている普通のエクセルファイルです。
    テキストエディタで開いてみましたが、文字化けしてしまい内容が読めませんでした・・。

    http://pear.php.net/manual/ja/package.fileformats.spreadsheet-excel-writer.php
    上記確認しました。

    これかもしれません。

    だとすると、どこに問題のテンプレート(ひな形)があるのでしょうか。
    確認してみますが、もしアドバイスがあれば是非お願いします。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません