Excelファイルを書き出す
では、さっそくPOIを使ってExcelファイルにアクセスをしてみましょう。まずは、ファイルに書き出す「saveToFile」メソッドから作成をしましょう。ここでは、用意してあるJTableに書かれている値をそのままXLSファイルに保存することにしましょう。
public void saveToFile(){
JFileChooser chooser = new JFileChooser();
int res = chooser.showSaveDialog(this);
if (res == JFileChooser.APPROVE_OPTION){
File fname = chooser.getSelectedFile();
FileOutputStream output = null;
BufferedOutputStream boutput = null;
POIFSFileSystem poifs = null;
try {
output = new FileOutputStream(fname);
boutput = new BufferedOutputStream(output);
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet1 = workbook.createSheet();
workbook.setSheetName(0,"Sheet1");
for(int i = 0;i < row_num;i++){
HSSFRow row = sheet1.createRow(i);
for(int j = 0;j < col_num;j++){
HSSFCell cell = row.createCell((short)j);
String val = (String)table.getModel().getValueAt(i,j);
cell.setCellValue(new HSSFRichTextString(val));
}
}
workbook.write(boutput);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
boutput.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
ここでは、JFileChooserを使って保存するファイルを取得しています。JFileChooserというのは、ファイルを選択するダイアログを呼び出すためのものです。
JFileChooser chooser = new JFileChooser();
int res = chooser.showSaveDialog(this);
まず、JFileChooserインスタンスを作成し、それから「showSaveDialog」メソッドを呼び出します。引数には、表示する保存ダイアログがどのウインドウから呼び出されるかを指定します。通常は、this(JFrame)を指定すればよいでしょう。
if (res == JFileChooser.APPROVE_OPTION){
File fname = chooser.getSelectedFile();
ファイルダイアログからファイルを選択(あるいはファイル名を入力)してOKすると、ダイアログが閉じられます。このとき、「どうやって閉じたか」を示す値が返されます。「どうやって」というのは、つまりキャンセルボタンを押して閉じたか、OKして閉じたか、ということですね。OKして閉じた場合には、JFileChooser.APPROVE_OPTIONという値が返されますので、showSaveDialogでこの値が返されたなら、処理を行うようにすればよいでしょう。
選択したファイルは、getSelectedFileで取得することができます。これで得られるのはjava.io.Fileインスタンスになります。後は、このFileインスタンスを使って、保存を行えばいいわけですね。