...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

なでしこ on D言語

import std.process;
import std.windows.charset;
import std.c.string;
import std.string;
import std.conv;
import std.stdio;

void main()
{
	nadesiko_oneLiner("1+3をAに代入。A=A*2。Aを表示");
	nadesiko_oneLiner("エクセル起動。1秒待つ。エクセル終了");
	
	nadesiko("なでしこソースファイル.nako");
}

// 後で環境変数 NADESIKO_EXE から読むように変更する
immutable(char[]) NADESIKO_EXE = `C:\users\haru\desktop\nadesiko_1_520\cnako.exe`;

int nadesiko(string commandUTF)
{
	return nadesikoImpl(commandUTF, " ");
}

int nadesiko_oneLiner(string commandUTF)
{
	return nadesikoImpl(commandUTF, " -e ");
}

int nadesikoImpl(string commandUTF, string option)
{
	const(char)* commandMBS = toMBSz(commandUTF);
	const(char)* command = strcat((NADESIKO_EXE ~ option).dup.ptr, commandMBS);
	return system(to!string(command));
}

なでしこの変数とか呼び出し結果を受け取れたら最高なんだけど.

ちなみに

プログラムでエクセルを操作したいのだがD言語から直接COMとかで操作するのは面倒なので,なでしこを介する.
なでしこには,エクセルのセルを読み書きする命令や,エクセルファイルをCSV化する命令,マクロを呼び出す命令がある.
それらを組み合わせれば,たくさんのエクセルファイルから任意のセルの値を集めて集計した後,グラフ化して表示することができる.


ただ,なでしこ経由でxls→csvに変換するとすごく時間がかかるんだよね・・・.
xlsファイルに直接高速にアクセスできたらいいんだけど.