ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

サイト上にあるファイル/DBの内容から、Wordを使って差し込み印刷する

2011-01-25 11:20:49 | JavaとWeb


 たとえば、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を持ち出さず、ブラウザからでもよい。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

1月24日(月)のつぶやき

2011-01-25 02:48:34 | Twitter
11:00 from web
ソフトウエアジャパン2011の参加申し込みをしていたら、情報処理学会の会員番号を入れなきゃいけなくなって、あせった。番号なんて、覚えていない(^^;)→電子図書館の登録情報変更を見て判ったけど・・・
by xmldtp on Twitter

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

システム化すれば、効率は上がるというものではない

2011-01-24 17:04:01 | Weblog

 コンピューターは、言われたとおりにしかやらないので、
 めちゃくちゃなことを命令すれば、めちゃくちゃなことをする。
 それも、大量に、高速に・・・

 システム化すれば効率が上がるのは、コンピューターなし、ないしはExcelとか、汎用的なツールを使って、システムが回っている場合の話であって、
 もともと、混乱している会社、行き当たりばったりの会社をシステム化しても、混乱や行き当たりばったりを増幅するに過ぎない。
 つまり、投資は無駄になる。

 投資を無駄がないようにするには、
 まず、手作業で一巡するか、(=これを確認するには、アクティビティ図とユースケースシナリオを書くことで確認できる)
 できれば、Excelで、ひととおりの作業をやったとして、シミュレートできるかなどの、
確認作業が必要だろう。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

JavascriptからPDFを出力するライブラリ

2011-01-24 11:48:30 | JavaとWeb

途中報告なんだけど、メモメモ

JavascriptからPDFを動的に生成して出力できると、
マッシュアップしたものをPDFに出せるんで、便利だよね。

で、ここ
JavaScriptでPDFを動的に生成できるライブラリ『jspdf』
http://www.ideaxidea.com/archives/2009/04/jspdf.html



実際には、

ここ
http://code.google.com/p/jspdf/downloads/detail?name=jspdf-20090504.zip
からダウンロードできて、
jspdf
http://code.google.com/p/jspdf/

にホームがあり、そこから、デモが見れる。




ダウンロードして解凍してできるjspdfフォルダの中に、jspdf.jsっていうJavascriptと、libs,examplesなんていうフォルダができる。
そこで、そのjspdfフォルダ内に、以下のようなサンプルプログラムを書いてみた。
<html>
<head><title>PDFTEST</title>
	<script type="text/javascript" src="./libs/base64.js"></script>
	<script type="text/javascript" src="./libs/sprintf.js"></script>
	<script type="text/javascript" src="./jspdf.js"></script>
</head>
<body>
<SCRIPT Language="JavaScript">
<!--

var doc = new jsPDF();
doc.text(20, 20, '1stPage');
doc.addPage();
doc.text(20, 20, '2ndPage');

// Output as Data URI
doc.output('datauri');
// -->
</SCRIPT>
</body>
</html>

(上記< >は、本当は半角)

これをFireFoxでみたら、うまくいった。
IEだと、「システムコールに渡されるデータ領域が小さすぎます」になる。
ただ、FireFoxでも、日本語を入れると化ける
(ただし、うちのIEとFireFoxは、かなり環境が違うので、ブラウザのせいではなく、環境のせいかも?)


うーん、使い物にならん。
解析するのは、めんどっちーなー・・・
jspdf.jsに「Some parts based on FPDF」ってコメントあるけど、FPDFの日本語化対応とおなじようなことするのかにゃー?

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

2月、3月の展示会、セミナー等

2011-01-23 22:22:07 | Weblog

自分へのメモ。展示会申し込みのためのまとめ

PAGE2011
2011年2月2日(水)~4日(金)
サンシャインシティコンベンションセンターTOKYO
http://www.jagat.or.jp/PAGE/2011/

ソフトウエアジャパン2011
2月3日
http://www.ipsj.or.jp/10jigyo/forum/software-j2011/
(もうしこみ、24にちまで)

NII市民講座
「脳でモノを見る ―脳の中に創られる世界とは?―」
2011年2月16日(水)18:30〜19:45 

Developers Summit 2011(デブサミ2011)
会期 2011年2月17日(木)・18日(金)
会場 目黒雅叙園(東京・目黒)
http://codezine.jp/devsumi/2011/

オープンソースカンファレンス2011 Tokyo Spring
日程:2011年3月4日(金)・5日(土) 10:00-17:00
会場:早稲田大学(西早稲田キャンパス63号館、61号館)
http://www.ospn.jp/osc2011-spring/

JAPAN SHOP 2011 東京ビッグサイトで3月8日から開催
会期:2011年3月8日(火)~11日(金)
会場:東京ビッグサイト 東4・5ホール
http://www.shopbiz.jp/js/

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

1月22日(土)のつぶやき

2011-01-23 02:27:22 | Twitter
23:04 from web
いつの間に、人生90年時代になったの?”「人生90年時代!高齢者も元気」 年金支給年齢引き上げへ…与謝野経財相” http://blog.livedoor.jp/dqnplus/archives/1589975.html
by xmldtp on Twitter

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

外字を安易に取り入れるのは反対!

2011-01-22 21:31:28 | トピックス

ここのニュース
日本IT界の鬼っ子「外字問題」解消を 経産省が着手
http://www.asahi.com/national/update/0120/TKY201101200591.html


ウィリアムのいたずらは、外字を安易に取り入れることは反対です。
理由は、芝野先生がおっしゃっている(以下斜体は上記サイトの2ページ目より引用)

多くの漢字が画面上に並ぶ中から、延々探せというのか。漢字を増やすことはコンピューターにとって意味のある行為かも知れないが、人にとっては使い勝手が悪化するだけだ


ということにプラスしてなんだけど・・・
外字の中には、違いがよくわかんない字まである。

たとえば、上記リンク先に、「辺」っていう字があるんだけど、
住基ネットで使える文字、3行ならんでるけど、真ん中の行の
一番右と、右から2番目、違いわかる??
ぱっと見、わかんないよねえ・・・

少なくとも、わたしには、わかりませーん?

外字って、こんなの、いっぱいあるよ!

こーなっちゃうと、打ち間違えちゃう(選び間違えちゃう)のよ。
選び間違ったとき、コードが違ってたら最後、文字が一致しなくなって、違う人になっちゃったりするわけよ・・・
ほらほら、年金問題とか、起きそうでしょ(^^;)


さらにね、書体メーカーだって、大変だよね!外字もコードに入ったら、その分、全部書体を用意しなきゃなんない。
ほとんど使わない、いや、区別すらできない文字を・・・だよ!
(上記の辺の外字、9ポイントだったら、多分、つぶれてわかんないよ -_-;)





なので、こーいう外字は、

・コードは、いまのJISコードに割り振られているものに、無理やり入れて、
・外字書体1、外字書体2とかいうふうに、書体を変えて、表示文字を変える

ようにしてほしい。外字書体1、外字書体2は、外字でよく出てくる順に、1、2、・・・といれていくとか・・・

そうすれば、
・フォントメーカーは、外字書体1,2は明朝、ゴシック、勘亭流まで用意、外字書体3,4,5は、あまり使われないので、明朝とゴシックのみ用意
 とか、選べる。多分外字は、明朝、ゴシックくらいで、ナールとかは、いらなさそうな気がする・・

・検索の場合、外字でも、同じ文字コードになるので、検索可能

・字が間違えていたら、書体切り替えだけで済む。

ってことで、いいことずくめの気がするんだけど・・・




ま、それはともかく、違いが分かんなくって選べないような外字が延々と続くのは、避けたいんですけど・・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

1月21日(金)のつぶやき

2011-01-22 02:47:20 | Twitter
09:30 from web
ロゴを見て、HTML5の未来に不安を感じた・・・ http://www.w3.org/html/logo/
21:51 from web
さっき、「はやぶさ」の川口教授のお話を、椿山荘で聞いてきた。
by xmldtp on Twitter

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Wordマクロ(VBA)で、表を書いたり、文字を入れたり・・・

2011-01-21 18:23:12 | Officeソフト&VBA


Wordマクロで、表を操作できると、ExcelやAccessからWordにデータを読み込んで、申請書とか作れるので、いいと思いません?
ってことで、Wordの表に関するマクロ操作を調べてみました。




■載っているサイトなど

ワードVBA
http://www.aa.alpha-net.ne.jp/pcfriend/word/WordHeader.htm


とか、

Word VBA の入門用リンク集 (ワードマクロの,サンプルコードやリファレンス)
http://d.hatena.ne.jp/language_and_engineering/20100314/p1


に少し載ってる。

だけど、あんまり書いてない。むしろ、Wordを開いて

マクロ→新しいマクロの記録

で、自分が知りたい操作を行い、その結果を見たほうが早い。
以下の情報は、そうやって集めました(なので、もっといいやり方があるかも)




■表を作成して、セルに文字を入れる。

こんなかんじのマクロを書きます。
Sub Macro1()

'表枠の作成
Set myTable = ActiveDocument.Tables.Add(Selection.Range, 2, 5, wdWord9TableBehavior)

'文字の設定
myTable.Cell(2, 1).Select
Selection.TypeText Text:="2行目の、はじめ"

End Sub


2行5列のテーブルを作る。wdWord9TableBehaviorっていれないと、線が黒くならない。
cellを選択して、TypeTextで値をセットしている。




■表を選択する

 でも、実際は書かれてる表を選択したい場合が多い。
 そんなときは、こうする
Sub Macro2()

'表枠の選択
Set myTable = ActiveDocument.Tables(1)

'セルの書式設定
myTable.Cell(2, 1).Select
Selection.Shading.BackgroundPatternColor = wdColorRose

End Sub


ActiveDocument.Tables(1)のような、引数でテーブルを選択できる。
なお、wdColorRoseは、ばら色(ピンク)。この色のセルになる。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

グルーポンのCEOが、一連の騒動をYouTubeで謝罪しているそうな

2011-01-21 15:56:01 | トピックス

ここ
アメリカ人も謝る時には謝る グルーポンCEOが「大失敗」を謝罪
http://news.goo.ne.jp/article/newsengw/world/newsengw-20110118-01.html

の記事をみると、グルーポンのCEOが、一連の騒動をYouTubeで謝罪しているそうな

CEOが謝罪しているYouTubeのサイトは、以下のサイトなんだけど、音を出せない環境にあるので、
とりあえず、メモメモ

グルーポン・ジャパン公式チャンネル
http://www.youtube.com/user/gruponpon2010



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「コナミ、ハドソンを完全子会社化!」-”ラブプラスに高橋名人参戦か”ってこと?

2011-01-21 10:33:42 | トピックス

ここの痛いニュース
コナミ、ハドソンを完全子会社化!…ハドソン上場廃止へ
http://blog.livedoor.jp/dqnplus/archives/1589372.html


それって、コメントにあるように
(以下斜体は上記サイトより引用)


ラブプラスに高橋名人参戦か


ってこと?

ちなみに、コメントに

どんな会社だよハドソン

ってあるけど、北海道でアマチュア無線機売ってた会社だよねえ・・・当然(^^)v

(だからって、会社ロゴをはちにしたんなら、オヤジギャグだな・・・
 ま、HTML5のロゴよりいいけどな・・・)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

1月20日(木)のつぶやき

2011-01-21 02:35:23 | Twitter
14:24 from web
NII(のGRACEセンター)が、クラウドの職員&研究者を募集してる! http://www.nii.ac.jp/recruit/110118tokunin/
by xmldtp on Twitter

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

HTML5のロゴ、ださすぎない?

2011-01-21 01:22:17 | Weblog

これなんだけど・・・




ここでも行って、さらに笑って、おくんなまし。

http://www.w3.org/html/logo/


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

○月X日から、△月■日までの、営業日数(時間数)をExcelで求める

2011-01-20 18:34:16 | Officeソフト&VBA

 たとえば、4月1日から、5月28日までの営業日数(すなわち、土日休日を除く)をもとめたかったり、稼動時間数を求めたい場合がある。
 これって、Excelでやると簡単なので、メモしておきます。

 こんな感じのシートを作ります(途中まで、本当はもっとつづく)。





<<作り方>>

■1.(A列:日付を入れる)

 まず、A列に、日付を入れます。
 セルA2に、開始日(今回は2011/4/1)を入れてください。
 そして、そのセルをクリックすると、右下に小さい■(”フィルハンドル”というらしい)が出ます。
 それを、下方向にドラッグさせていくと、日付が、4/2,4/3・・・とどんどん出来てきます。
 終了日の5月28日までドラッグして、手を離します(ドラッグをやめます)

 
■2.(B列:曜日を数字で求めます)

 次にB列に曜日を数字で入力します(月曜日を1とする)
 セルB2に、

  =WEEKDAY(A2,2)

 と入れてください。A2セルの日付が数字で入ります。
 月曜日1、日曜日7となる形です(第二引数に2を指定すると、こうなる)。
 これを、上記のように、フィルハンドルをクリックして、ドラッグして、
 最終日まで埋めてください。


 このとき、日付表示になってしまう場合には、数字にするので、
 B列(Bとかいてあるところ)をクリックして選択したら、
 右クリック、「セルの書式設定」を選択してもらい、
 表示形式を、「数値」にします。


■3.(C列:土日、休日を0にする)

 まず、土日を0、平日を1にします
 セルC2に、

   =IF(B2<=5,1,0)

(<は、本当は半角)

 と入れてください。5以下、すなわち、金曜日以下(=月~金)は、1、
 土日(6,7)は0になります。

 そしたら、フィルハンドルをドラッグして、下まで引っ張ってください。
 土日は0、平日は1になります。

 この方法では、休日は入りません。というか、休日はわかんないので、
A欄が休日をしめしている(たとえば、A30 2011/4/29=昭和の日)行の
C欄(例だとC30)に、直接 0 と入力します。
 このように、休日は、直接0と入力して対処します


■4.(D欄:働いた時間等)

 D欄には働いた時間を入れます。
 今回は、8時間労働とします。
D2欄に
  =C2*8
と入力します。入力したら、これも、一番下まで、
フィルハンドルをドラッグしてください。

こうすると、平日はC欄は1なので
 1*8=8時間となり
休日は0なので、
 0*8=0時間
となって、休日0、平日は労働時間が入ります。
 
8時間働かない日があったら、直接、その日のD欄に
働いた時間数を入れてください。

■5.合計時間を求める

 そしたら、E欄より右側の適当なセルに
=SUM(D:D)
 と書くと、D欄の合計、すなわち労働時間が出ます。
=SUM(C:C)
 と書くと、C欄の合計、すなわち稼動日数が出ます。




<<おまけ>>

やらなくてもいいのですが、図では、土日休日、
つまり、C、D欄が0のところは、灰色になってます。

これは、C欄、D欄を選択して(CとかDとか書いてあるところクリック、
カラム全体が選択される)「書式」メニューの「条件付き書式」を選択
するとできます。以下のようなダイアログが出てきますので、

セルの値が0のとき、灰色になるように指定します。
灰色の指定は、「書式」と書いてあるボタンをクリックして
「パターン」タブを選ぶと、設定できます。




結構便利でしょ!


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

3Dだと奥行き情報を使って切り抜きが簡単になる?DTPデータは2次元でも素材は3次がいい?

2011-01-20 14:52:38 | Weblog

 昨日、NIIの市民講座に行ってきた。
 「マルチメディアと検索技術」ってことで、画像の類似検索を、特徴量を使って行う話を聞いてきたんだけど、その話の質問で・・・

 最近3Dテレビとか話題ですけど、3次元になったら、画像の類似検索でも、何か影響ありますか?

 というのが出た。この答えとして

 3Dだと、背景と物体が奥行きの距離感によって、分離できます。つまり、対象としている物体を取り出すことが楽になります

 というようなことを言っていた。




 これって、つまり、

 3Dだと、物体を切り抜くのに、距離の違いによって容易に切り抜けます

 ってことにならない?・・・DTP屋さんにとって、便利だよねえ・・・
 奥行きの位置の違いにより、手前にある物体と、奥にある背景を分離することができる。

 だとすると、出力は2次元でも、素材は3次元でとっておいたほうがいいのかな。。。
 切抜きや影の処理とかのために・・・

 でも、問題は、そーいう位置関係を考慮して切り抜いたり、影をつけてくれるソフトを
誰が作るかだよねえ・・・Adobe?フリーでだれか公開する?





 でも、このソフトできたら、すごいよねえ・・・

 だって、ゆうこりんの、

水着の上にエプロンを着けて撮影したグラビアを、知らないうちに水着を着ていないように修整される

(斜線部は、リンク先参照)
つまり、水着でエプロン→裸でエプロンも、簡単に修正できそうだよね。

1.水着でエプロン画像を切り抜く
2.3次元処理で、水着部分を滑らかな曲線にする
3.曲線にした部分を、色をつける
4.影をつける

で裸にエプロンに出来る。




 ここまでの処理をするには、たぶんCPUパワーもメモリパワーも必要なので、クラウド上でやることになるのかな?

 エロとクラウドの融合ってことで、お金儲けにつながりそうだね・・・

 ってことは、そのソフトを作った人は、ぼろもうけ?

 きっと、こんなかんじ



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする