ここから質問投稿すると、最大4000ポイント当たる!!!! >>

POIを使用してExcelの書式設定を行いたいんですが、
下記の書式設定は可能なのでしょうか?

●セルの書式設定-配置の「折り返して全体を表示する」

可能であれば、設定方法等を教えて下さい。宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

HSSFCellStyleにsetWrapTextというらしきメソッドがありますが試してみましたか?

    • good
    • 0
この回答へのお礼

setWrapText の存在を忘れていました。
使用してみたら処理がうまくできるようになりました。
ありがとうございました。

お礼日時:2005/12/07 18:59

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPOIを使った書式設定

度々、POIを使ったExcel出力で質問です
書式設定で通貨記号ありのフォーマットを指定したいのですが

Excelに「\」記号で書式設定した後に
POIで書式を取得したところ
($#,##_):($#,##) ←うろ覚えです(汗
の形式で取得できました

同じように、他のセルに対してPOIで設定したところ
通貨記号が「$」で表示されてしまいました

Excelの書式設定画面を見ると、
 使用する通貨記号の設定
だけ、別で指定するようになっています。

POIで通貨記号を設定する方法を教えてください。

Aベストアンサー

こんな感じでしょうか。

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFDataFormat dataFormat = workbook.createDataFormat();
short index = dataFormat.getFormat("\"\\\"#,##0_);[Red](\"\\\"#,##0)");
HSSFCellStyle style = workbook.createCellStyle();
style.setDataFormat(index);
HSSFSheet sheet = workbook.createSheet();
HSSFCell cell = sheet.createRow(0).createCell((short)0);
cell.setCellStyle(style);

参考URL:http://www.javadrive.jp/poi/style/index9.html

Qjakarta poiを使用し、EXCELの行コピーはできないのでしょうか?

以下のような処理を検討しています。

フォーマット.xlsには、タイトル行の雛型(背景色などを定義済)をを作成しておきます。

そのフォーマット.xlsをpoiを利用し読み込み、
■タイトル行
・明細
・明細
・明細
■タイトル行
・明細
・明細
の要領でタイトル行を何度もコピーし、新しいエクセルを出力したいと考えています。
HSSFSheet#shiftRowsは完全なる移動のようですので、
何度もタイトル行を使う場合には不都合がでてしまいます。

単純な行コピーなのでできそうな感じもするのですが、
ご存じな方いらっしゃいましたら、
ご教授いただけますようお願いいたします。

Aベストアンサー

コピーのようなメソッドは用意されていないんですね。
ちょっと面倒ですが、行の内容を取得して、その中のセルの値およびスタイルをコピーするという方法でしたらどうでしょうか。

  // テンプレートの読み込み
  POIFSFileSystem fs = new POIFSFileSystem(
      new FileInputStream(new File("src.xls")));
  HSSFWorkbook book = new HSSFWorkbook(fs);
  HSSFSheet sheet = book.getSheetAt(0);
  
  // タイトル行(1行目)の取得
  HSSFRow titleRow = sheet.getRow(0);
  
  // タイトル行を別の行(ここでは2行目)へコピーします。
  HSSFRow row = sheet.createRow(1);
  
  // セルをコピーします。
  int length = titleRow.getLastCellNum();
  for (int i=0; i<length; i++) {
    HSSFCell titleCell = titleRow.getCell((short)i);
    HSSFCell cell = row.createCell((short)i);
    if (titleCell != null) {
      // 値を取得
      switch (titleCell.getCellType()) {
        case HSSFCell.CELL_TYPE_BLANK :
          break;
        case HSSFCell.CELL_TYPE_BOOLEAN :
          cell.setCellValue(titleCell.getBooleanCellValue());
          break;
        case HSSFCell.CELL_TYPE_ERROR :
          cell.setCellValue(titleCell.getErrorCellValue());
          break;
        case HSSFCell.CELL_TYPE_FORMULA :
          cell.setCellValue(titleCell.getStringCellValue());
          break;
        case HSSFCell.CELL_TYPE_NUMERIC :
          cell.setCellValue(titleCell.getNumericCellValue());
          break;
        case HSSFCell.CELL_TYPE_STRING :
          cell.setCellValue(titleCell.getStringCellValue());
          break;
        default :
      }
      // スタイルを取得
      cell.setCellStyle(titleCell.getCellStyle());
    }
  }
  
  // 保存
  FileOutputStream fos = new FileOutputStream(new File("dest.xls"));
  book.write(fos);
  fos.close();

※例外処理は抜いています。

コピーのようなメソッドは用意されていないんですね。
ちょっと面倒ですが、行の内容を取得して、その中のセルの値およびスタイルをコピーするという方法でしたらどうでしょうか。

  // テンプレートの読み込み
  POIFSFileSystem fs = new POIFSFileSystem(
      new FileInputStream(new File("src.xls")));
  HSSFWorkbook book = new HSSFWorkbook(fs);
  HSSFSheet sheet = book.getSheetAt(0);
  
  // タイトル行(1行目)の取得
  HSSFRow titleRow = sheet.getRow(0);
...続きを読む

QPOIでExcelに時刻(h:mm)の値を出力したい

お世話になっております。

現在JAVA勉強という名目でEXCELで運用している社内勤務表をWebから入力できるシステムを開発しています。(好みによりExcel直接編集とWebによる編集どちらかを選べる)

現状の問題としてはPOIライブラリにより勤務開始時間、勤務終了時間の値をExcelのセルに出力するところで h:mm (例えば[10:30])という値が出力できないことです。(既存の書式に合わせた値の出力ができない)
文字列(先頭に'が付く)やシリアル値として出力することは可能ですが、ただ単純に[10:30]と出力することができません。

【実現したいExcelの出力結果】(JavaのString文字列"10:30"を元に出力)
値:[10:30]
表示:[10:30]

※Excelのセルは表示と値が異なる場合があるが両方共 h:mm 形式で出力したい。

【試行錯誤した出力結果】
(1)文字列として出力する
値:['10:30]
表示:[10:30]

※表示は期待通りだが値の先頭に'がついてしまいうまくいかない。
※出力した値は他のセルの計算式で参照するので'がついてるのは問題あり。

(2)Date型で出力し書式を h:mm 形式にする
値:[613666:30:00]
表示:[10:30]

※表示は期待通りだが値がシリアル値になってしまいうまくいかない。
※ただし m/d/yy h:mm 形式を出力するとシリアル値にならない。(何故だろう)
※シリアル値ではExcel直接編集の際に人が編集しにくい値なので問題。


実際Excelでは値も表示も[10:30]というセルはキーボード入力で簡単に作成できるのでPOIで出力できないとはとても思えません。
どうすれば[10:30]という値が出力できるか教えていただけないでしょうか。
よろしくお願いいたします。

-----------------------------------------------------------------------
【使用しているPOI】
バージョン:3.2
ダウンロードしたファイル:poi-bin-3.2-FINAL-20081019.zip
-----------------------------------------------------------------------
【試行錯誤したプログラム】
public class CellOutput{
public static void main(String[] args){

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFRow row = sheet.createRow(1);
HSSFCellStyle style = workbook.createCellStyle();
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("h:mm"));

try {
// テスト1(文字列で出力)
HSSFCell cell1 = row.createCell((short)0);
cell1.setCellValue("10:30");

// テスト2(Dateで出力 書式設定無)
HSSFCell cell2 = row.createCell((short)1);
SimpleDateFormat hhmmFormat = new SimpleDateFormat("h:mm");
Date time = hhmmFormat.parse("10:30");
cell2.setCellValue(time);

// テスト3(Dateで出力 書式設定有)
HSSFCell cell3 = row.createCell((short)2);
cell3.setCellValue(time);
cell3.setCellStyle(style);

// テスト4(Dateで出力 m/d/yy h:mm形式)
HSSFCell cell4 = row.createCell((short)3);
HSSFCellStyle style2 = workbook.createCellStyle();
style2.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
cell4.setCellValue(time);
cell4.setCellStyle(style2);

}
catch(Exception e){
}
FileOutputStream out = null;
try{
out = new FileOutputStream("sample.xls");
workbook.write(out);
}catch(IOException e){
System.out.println(e.toString());
}finally{
try {
out.close();
}catch(IOException e){
System.out.println(e.toString());
}
}
}
}
-----------------------------------------------------------------------

お世話になっております。

現在JAVA勉強という名目でEXCELで運用している社内勤務表をWebから入力できるシステムを開発しています。(好みによりExcel直接編集とWebによる編集どちらかを選べる)

現状の問題としてはPOIライブラリにより勤務開始時間、勤務終了時間の値をExcelのセルに出力するところで h:mm (例えば[10:30])という値が出力できないことです。(既存の書式に合わせた値の出力ができない)
文字列(先頭に'が付く)やシリアル値として出力することは可能ですが、ただ単純に[10:30]と出力す...続きを読む

Aベストアンサー

できないわ。
残念ながら。

それが証拠に、
最初に10:30と入力したExcelのセルから
getCellStyleした結果をsetCellStyleしても
反映されないわ。
テスト3の方法を取るのが一番と思うわ。


それと、POI3.2は
・createCellでshortへのキャストは不要よ。
・テスト1で、文字列は必ずHSSFRichTextStringに変換すること。

Q【Apache POI】Excelの枠線を消す方法

いつもお世話になっております。

Apache POIを使用して、シート全体の範囲でExcelシートの枠線を消す方法を教えてください。
セルひとつひとつに書式を設定するのではなく、全体で設定したいです。
ちなみに環境は以下を使用しています。

情報に不足があればお問い合わせください。よろしくお願いします。

【環境】
Excel : 2002 SP3
java : 6.0

Aベストアンサー

POIのバージョンは何でしょうか?
多分、バージョンによらず一発で設定できるようなメソッドは多分ないと思いますが。
行ごと列ごとなどの単位で、一つ一つ設定するしかないと思います。

「枠線」ではなくて「罫線」ですよね?
「枠線」なら、
sheet.setDisplayGridlines(false);
とすれば表示されなくなります。
http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Sheet.html#setDisplayGridlines(boolean)

Qeclipseとtomcatで404エラー

-----------------------------------
Windows7 Ultimate

eclipse Indigo
tomcat 5.5
-----------------------------------

eclipseとtomcatを使用して、JSPを動かそうとしています。
eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは
C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています)

既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いていたtomcatを終了させて、eclipseの上部にあるtomcatのアイコンをクリックし、その後、通常のブラウザで表示させようとすると404エラーが出てしまいます。(http://localhost:8080/Test/test.jsp)

そもそも右クリック→実行の際に起動するtomcatとeclipse上部にアイコンで存在するtomcatはどう違うのでしょうか?

そしてどうすれば、上部のtomcat起動からブラウザで直接JSPを呼び出すことが出来るのでしょうか?

申し訳ありませんが、ご教授お願い致します。

-----------------------------------
Windows7 Ultimate

eclipse Indigo
tomcat 5.5
-----------------------------------

eclipseとtomcatを使用して、JSPを動かそうとしています。
eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは
C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています)

既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いてい...続きを読む

Aベストアンサー

EclipseからTomcatを起動した場合、プロジェクトに生成されたWebアプリケーションのディレクトリをTomcatの公開ディレクトリに強制的に変更しています。普通に起動すると、プロジェクトのディレクトリはTomcatの公開ディレクトリにはなっていませんから表示は出来ません。

通常、Eclipseで作成したWebアプリケーションは、WARファイル(Webアーカイブ)として書き出し、それをデプロイします。Eclipseの「エクスポート」メニューでWARファイルを作成し、そのファイルをTomcatの「webapp」フォルダに入れてください。これで公開できるはずです。


人気Q&Aランキング