忍者ブログ
まにょのITメモ
[1]  [2]  [3]  [4]  [5]  [6]  [7
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

セルを読んで、文字を取りたいとき、cell.getCellValue()では取れない。
セルに文字を書き込みたいとき、cell.setCellValue()では書けない。

HSSFCell cell = row.getCell(1);
HSSFRichTextString  richTextString  =  cell.getRichStringCellValue();

poiの場合、文字はString型ではなく、HSSFRichTextString型となる。


PR


英語表記で指定したセルを数値に変換する
例)A    0
      AA  26

public class Sample2 {

    public static void main(String[] args) {
        Sample2 sample2 = new Sample2();
        System.out.println(sample2.sample("BA"));
    }

    private int sample(String val){
        int result = 0;
        // 桁数
        int length = val.length();
        StringBuilder builder = new StringBuilder(val);
        builder.reverse();
        String temp = builder.toString();
        for (int i = 0; i < length; i++) {
            char c = temp.charAt(i);
            int num = this.sample(c);
            result += num * Math.pow(26, i);
        }
        return result - 1;
    }

    private int sample(char val) {
        int result = 0;
        for (int i = 'A', count = 1; i <= 'Z'; i++, count++) {
            if (val == i) {
                result = count;
                break;
            }
        }
        return result;
    }
}

通常のコンパイルではjavaファイルがある場所にそのままclassファイルができてしまう。
それを、自分で指定した場所に置く方法。

javac -d classes co/jp/sample/SampleA.java

-d classes で ディレクトリclassesを指定している。
classファイルは、classesというディレクトリの下に、co/jp/sampleと階層を作り、
その中にできるようになる。



プログラムにjarを使用している場合。
通常のコンパイルではjarが読み込めていないので、エラーになる。
そんな時はこれ。

javac -cp ../lib/commons-beanutils.jar co/jp/sample/SampleA.java

-cp ../lib/commons-beanutils.jar で、ディレクトリlibの配下にある
commons-beanutils.jar までクラスパスを通してあげる。

for(int i=0; i<10; i++) {
  処理
}

for文といえば、上記のような形をテンプレとして思い浮かべがちだが・・・

for( ①; ②; ③ ) {
}

for文の( )の中身、セミコロンの間はそれぞれ
①初期化
②条件
③追加処理
を書く場所となっている。

ので、

条件何もなし、ひたすらループさせたい時は、
for( ; ; ) {
}
と、セミコロンの間に何も書かないこともできるし、

変数を2つ使いたい!という時は、
for(int i=0, k=10; i<5; i++, k--) {
}
という風に変数を複数宣言することもできる。

for(String str="aaa"; ; ) {
}
intじゃなくて、Stringを書くこともできる。


★できないこと
for(int i=0, String str="a"; ; ){
}
型の違う2つ以上の変数を初期化すること。

for( ; i<10, n>5; ) {
}
2つの変数を使って条件にすること。

char c = '\u3042';

charは、1文字しか持てないので、本当なら'\u3042'という6文字は持てないはず。
この\uがポイント。
\uを書くと、このシングルコーテーションの中身は文字コードですよ、という宣言になる。
charは、1文字しか持てないが、その文字を文字コードで表す場合のみ、2文字以上持てる。
(文字コードで表せる1文字。結局文字としては1文字しか持てない。)
忍者ブログ * [PR]