Lua 学習: xls ファイル出力

2016-11-09 :  PCクリニック
Python、C言語、Perl、化学業界、硝子業界、グルコサミン、Firefox
前(2016-11-07)の記事「Lua 学習: xls ファイル・アクセス」に続いて、
今回は逆方向をやってみた。


最初にトライしたのは、・・・・・

既存の“imp.txt”を丸ごと“out.xls”に変換する。
入力テキストファイルはタブ区切りとする。

で作ったのは、前回の逆パターン:
----- test_txt2xls.gsl -----
require'winman' ----- モジュール準備

----- 出力ファイルの準備 -----
----- 先ず、ダミーのエセ・似非(えせ) xls ファイルを用意する。
OT=io.open( 'out.xls', 'w' ); OT:write( '0\t0\n' ); OT:close()
os.execute( 'start out.xls' ) ----- “EXCEL” で開く

----- 入力ファイルの準備 -----
os.execute( 'start notepad imp.txt' ) ----- “メモ帳”で開く

----- 両方のアプリの“窓”を特定
pad = winman.find{matchtitle=".+メモ帳$", wait=4000}
xls = winman.find{matchtitle=".+Excel.*$", wait=4000}

----- 元を、全て選択(Ctrl+A)し、クリップボードにコピー(Ctrl+C)
pad:activate(); winman.sleep(10)
winman.send( '^a^c' )
winman.sleep(500) ----- clipboard に確実に書き込まれる迄

----- EXCELにペースト(Ctrl+V)し、上書き保存(Ctrl+S)し、
xls:activate(); winman.sleep(10)
winman.send( '^v^s' ); winman.sleep(200)
----- ここで、警告が出るので、細工が必要!!!
winman.send( 'n' ); winman.sleep(100)
winman.send( '{ENTER}' ); winman.sleep(100)
winman.send( 'y' ); winman.sleep(100)
winman.send( '%fx' ) ----- ファイル(Alt+F)→終了(X)

----- メモ帳で、選択解除(ESC)し、ファイル(Alt+F)→終了(X)
pad:activate(); winman.sleep(100)
winman.send( '{ESC}%fx' )
でイイかな?

しかし、
これ、EXCEL 2002 では良かったが、

EXCEL 2010 では、
初めにダミー xls ファイルを開くときに出る警告は、
手動では消せるが、winman からの操作では消せない?!?!?!


仕方がないので、対処法として、
ゼロから EXCEL を立ち上げようとしたが、・・・

os.execute( 'EXCEL.exe' ) が何故か出来ない。
( EXCEL.exe が見つからない )

では、フルパス指定とすると?
起動はした。
でもこれはマシン固有になる?!?!?!

EXCEL.exe の場所を、レジストリから得る?
これ、<紙>のマシン環境では特殊な状況で、・・・・・
やはりダメ。

しかも、os.execute( 'start EXCEL.exe' ) が何故か出来ない?


仕方なく、
カラの本物の(バイナリの)“xls”ファイルを作っておいて、
これを開くということにした。

結果:
----- sample_txt2xls.gsl -----
require'winman' ----- モジュール準備

----- 出力ファイルの準備 -----
----- カラの正規 out.xls ファイルを用意しておく!!!
-----------------------------
os.execute( 'start out.xls' ) ----- “EXCEL” で開く

----- 入力ファイルの準備 -----
os.execute( 'start notepad imp.txt' ) ----- “メモ帳”で開く

pad = winman.find{matchtitle=".+メモ帳$", wait=1000}
xls = winman.find{matchtitle=".+Excel.*$", wait=4000}

----- 元を、全て選択(Ctrl+A)し、クリップボードにコピー(Ctrl+C)
pad:activate(); winman.sleep(10)
winman.send( '^a^c' )
winman.sleep(500) ----- clipboard に確実に書き込まれる迄

----- EXCELにペースト(Ctrl+V)し、選択解除(→、←)し、
xls:activate(); winman.sleep(10)
winman.send( '^v{RIGHT}{LEFT}' )

winman.send( '^s' ) ----- (ファイル)上書保存(Ctrl+S)
winman.sleep(1000) ----- 確実に保存されるまで
winman.send( '%fx' ) ----- ファイル(Alt+F)、終了(X)

----- メモ帳で、ファイル(Alt+F)→終了(X)
pad:activate(); winman.sleep(500)
winman.send( '%fx' )
となった。

補足
カラの正規xlsファイルについては、
どこか固定の場所(例えば<紙>の場合は、C:/_kami_/)に置いておいて、
これをカレントに、コピー&リネイムして使う。
という方法で行く。


本日はここまで。


afxLua 学習は続く?


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


161011
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク