[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
セルを読んで、文字を取りたいとき、cell.getCellValue()では取れない。
セルに文字を書き込みたいとき、cell.setCellValue()では書けない。
HSSFCell cell = row.getCell(1);
HSSFRichTextString richTextString = cell.getRichStringCellValue();
poiの場合、文字はString型ではなく、HSSFRichTextString型となる。
英語表記で指定したセルを数値に変換する
例)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;
}
}
それを、自分で指定した場所に置く方法。
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文字しか持てない。)