トップ «前の日記(2004-11-27) 最新 次の日記(2004-11-29)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2004-11-28

_ POIメモ

POIをいきなり見に行くと複合文書についていろいろ書いてある。でも、やりたいことは単にExcelで処理可能な、でもCSVやタブ区切りではないファイルの作成だったり(拡張子がxlsのやつ)。

で、そのドキュメントを探すのにちょっと苦労したり。だって複合文書用のファイルシステムがやたらと多いから。で見つけて使ってみるといきなり日本語が正しく表示されなかったり。

というわけでとりあえずシート名を日本語にし、セル内に日本語を埋め込むサンプルのメモ。

import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
public class PoiTest {
    static void setData(HSSFSheet s, int n) {
        for (int i = 0; i < n; i++) {
            HSSFRow r = s.createRow(i);
            for (int j = 0; j < 8; j++) {
                HSSFCell c = r.createCell((short)j);
                c.setEncoding(HSSFCell.ENCODING_UTF_16);
                c.setCellValue((n % 2 == 1) ? "漢字のテキスト" : "abc");
            }
            HSSFCell c = r.createCell((short)8);
            c.setCellValue(i);
        }
    }
 
    public static void main(String[] args) throws Exception {
        HSSFWorkbook hw = new HSSFWorkbook();
        HSSFSheet st = hw.createSheet();
        hw.setSheetName(0, "日本語", HSSFWorkbook.ENCODING_UTF_16);
        st.setColumnWidth((short)0, (short)(256 * 12));
        setData(st, 11);
        st = hw.createSheet("English");
        setData(st, 20);
        FileOutputStream fo = new FileOutputStream("test.xls");
        hw.write(fo);
        fo.close();
    }
}
で、
$ javac -encoding Windows-31J -classpath poi-2.5.1-final-20040804.jar PoiTest.java
$ java -cp .:poi-2.5.1-final-20040804.jar PoiTest
$ 
#意図はよくわかるが、shortってのはガンだな。

2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|

ジェズイットを見習え