top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
blanco Framework は Excel ブックを読み込んで各種ソースコードや設定ファイルを自動生成していますが、それを実現する根幹を成しているのが blancoCalcParser です。
blanco Framework は Excel ブックを読み込んで各種ソースコードや設定ファイルを自動生成していますが、それを実現する根幹を成しているのが blancoCalcParser です。こちらの利用例が私にとって必要だったので、これをメモしておきます。 Xls2XmlSimpleSample.java
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.xml.transform.TransformerException;
import blanco.commons.calc.parser.BlancoCalcParser;
public class Xls2XmlSimpleSample {
public static void main(String[] args) throws IOException,
TransformerException {
// Excel ブックから XML ファイルを生成。
new File("./tmp").mkdirs();
final InputStream inStreamDef = new BufferedInputStream(
new FileInputStream("src/Meta2Xml.xml"));
final InputStream inStream = new BufferedInputStream(
new FileInputStream("meta/blancoFrameworkProductList.xls"));
final OutputStream outStream = new BufferedOutputStream(
new FileOutputStream("./tmp/blancoFrameworkProductList.xml"));
new BlancoCalcParser().process(inStreamDef, inStream, outStream);
inStreamDef.close();
inStream.close();
outStream.flush();
outStream.close();
}
}
サンプルなので、IOException などの例外処理については手を抜いて記述しています。
Excel ブックの構造に関する情報は、以下のような XML 形式で記述して予め準備しておきます。 Meta2Xml.xml
<?xml version="1.0" encoding="UTF-8"?><!-- blancoCalcParser define file --><blanco version="0.1.0">
<target name="blancoCalcParser">
<blancocalcparser name="product">
<tableblock name="product-list" waitY="1" titleheight="1" rowname="product">
<startstring>プロダクト名</startstring>
<tablecolumn name="name">
<value>プロダクト名</value>
</tablecolumn>
<tablecolumn name="ant">
<value>Antタスク</value>
</tablecolumn>
<tablecolumn name="eclipse">
<value>Eclipse
Plug-in</value>
</tablecolumn>
<tablecolumn name="generator">
<value>自動生成系</value>
</tablecolumn>
<tablecolumn name="frequency">
<value>出現頻度</value>
</tablecolumn>
<tablecolumn name="effect">
<value>導入効果</value>
</tablecolumn>
<tablecolumn name="ease">
<value>導入しやすさ</value>
</tablecolumn>
<tablecolumn name="deprecated">
<value>非推奨</value>
</tablecolumn>
<tablecolumn name="description">
<value>内 容</value>
</tablecolumn>
<tablecolumn name="input">
<value>入力</value>
</tablecolumn>
<tablecolumn name="java">
<value>Java</value>
</tablecolumn>
<tablecolumn name="cs.net">
<value>C#
.NET</value>
</tablecolumn>
<tablecolumn name="js">
<value>Java
Script</value>
</tablecolumn>
<tablecolumn name="vb.net">
<value>VB
.NET</value>
</tablecolumn>
<tablecolumn name="PHP">
<value>PHP</value>
</tablecolumn>
<tablecolumn name="Ruby">
<value>Ruby</value>
</tablecolumn>
<tablecolumn name="Python">
<value>Python</value>
</tablecolumn>
<tablecolumn name="other">
<value>その他</value>
</tablecolumn>
<valuemapping>
<result>true</result>
<source>○</source>
</valuemapping>
</tableblock>
</blancocalcparser>
</target></blanco>
このサンプルを動作させることにより、Excel ブック (*.xls 形式) から XML ファイルを生成することができます。 blancoCalcParser は下位層で JExcelApi を利用しています。blancoCalcParser は blancoCommonsに同梱されています。