top / index / prev / next / target / source

2008-12-22 diary: blancoCalcParser の利用サンプル

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

old-v2

blancoCalcParser の利用サンプル

blanco Framework は Excel ブックを読み込んで各種ソースコードや設定ファイルを自動生成していますが、それを実現する根幹を成しているのが blancoCalcParser です。

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に同梱されています。


この日記について