たとえば、PHP+MySQLで、何かのサイトが作ってあって、
そのMySQLに顧客データが入っていたとする。
この顧客データを元に、DMを出したい。
Wordの「差込印刷」や「はがき印刷」(の「宛名面の作成」)を使えば、
顧客データを元に、宛名欄や、手紙に言葉を差し込んで印刷できる・・・はずである。
しかし、ここで、問題がある。MySQL+PHPはサイト上にある。
サイト上で、Wordを動かすことは出来ない。
なんとかして、Wordの差込データをローカル環境に持ってこないといけない。
どうするか・・・
いろいろ方法はあるけど、ウィリアムのいたずらとしては、
「Excelから、PHPにアクセスして、ファイル保存。
そのファイルをWordの差し込み印刷に使う」
っていうやり方をすると思う。
(Excelを持ち出さず、ブラウザからファイル保存してもOKだけど、
その場合、完璧な差込データをPHP側で用意しないと、加工が大変)
まず、前提知識なんだけど、Excel(Wordもそうだけど)は、「ファイル」の「開く」から、
ローカルファイルだけでなく、Webサイト上にある、テキストデータも直接開ける
(読み取り専用-ただし、差し込み印刷のデータソースには、ならない)
うそーんと思う人、
CSVのサンプルとして、ジャパンネットバンクが
http://www.japannetbank.co.jp/service/payment/web_all/sample_zengin.csv
にだしているので、これを、読み込んでみましょう。
1.Excelを立ち上げて、
2.「ファイル」→「開く」を選択
3.いつものファイルを開くダイアログ、でましたよね。
そしたら、下の感じで、「ファイル名」に、上記URLを入れて、「開く」をクリック

4.なんかでるけど、結局、開いたでしょ(^^)v
→もちろん、ネットにつながっている場合。
これ、拡張子、.PHPでも大丈夫です。
なので、
1.PHPで、ファイルなり、DBなりをアクセスして、データをCSVで返すスクリプトを書く
たとえば、今、data.txtっていうところに、CSVファイルがあって、それをそのまま返す場合
<?php $data = file_get_contents('data.txt'); echo $data; ?> |
(上記 < >は、本当は半角)
って感じに書く。これをgetdata.phpという名前で保存する。
2.Excelで、上記1のサイトを開く
上に書いてある、Excelから「ファイル」→「開く」で開く方法
例の場合だと、localhostに置いたのなら
http://localhost/getdata.php
というのを、「ファイル名」に入れて開けば、開けるはず
3.開いたら、(もし、Excel上で追加の操作をしたい場合は、操作を行い、最終的に)
「別名で保存」する。
→Excelファイルでも、テキストでもどっちでもいい
4.上記3で保存したデータを、差し込み印刷の「データファイルの選択」で選択する
→「ファイルの種類」の下向き三角形をクリックすると、リストがでてきて、テキストファイルとかも選べる
※差し込み印刷のやり方については
Word(ワード)で差し込み印刷をする方法
http://allabout.co.jp/gm/gc/50018/
を参照してください
※なお、ブラウザから「保存」すると、上記PHPスクリプトだと、改行がなくなっていることがある(あった)。
この場合、PHPスクリプトにおいて、echoする「前」に、上記一文を入れる
header("Content-type: text/plain; charset=utf-8");
この場合、日本語は、utf-8で送ること。そうすれば、Excelを持ち出さず、ブラウザからでもよい。