項目中要寫excel,把這個例子寫出來,以后可以看。
1.寫excel類
package net.blogjava.chenlb;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
* Jxl 的 Excel寫數據器.
* @author chenlb 2007-10-29 上午10:39:31
*/
public class JxlExcelWriter {
/**
* @param datas 封裝著Object[]的列表, 一般是String內容.
* @param title 每個sheet里的標題.
*/
public void writeExcel(OutputStream out, List datas, String[] title) {
if(datas == null) {
throw new IllegalArgumentException("寫excel流需要List參數!");
}
try {
WritableWorkbook workbook = Workbook.createWorkbook(out);
WritableSheet ws = workbook.createSheet("sheet 1", 0);
int rowNum = 0; //要寫的行
if(title != null) {
putRow(ws, 0, title);//壓入標題
rowNum = 1;
}
for(int i=0; i<datas.size(); i++, rowNum++) {//寫sheet
Object[] cells = (Object[]) datas.get(i);
putRow(ws, rowNum, cells); //壓一行到sheet
}
workbook.write();
workbook.close(); //一定要關閉, 否則沒有保存Excel
} catch (RowsExceededException e) {
System.out.println("jxl write RowsExceededException: "+e.getMessage());
} catch (WriteException e) {
System.out.println("jxl write WriteException: "+e.getMessage());
} catch (IOException e) {
System.out.println("jxl write file i/o exception!, cause by: "+e.getMessage());
}
}
private void putRow(WritableSheet ws, int rowNum, Object[] cells) throws RowsExceededException, WriteException {
for(int j=0; j<cells.length; j++) {//寫一行
Label cell = new Label(j, rowNum, ""+cells[j]);
ws.addCell(cell);
}
}
}
2.使用
public void testWriteExcel() {
List datas = new ArrayList();
String[] data = {"1", "chenlb"};
datas.add(data);
try {
OutputStream out = new FileOutputStream(new File("doc/chenlb.blogjava.net.xls"));
JxlExcelWriter jxlExcelWriter = new JxlExcelWriter();
jxlExcelWriter.writeExcel(out, datas, new String[] {"Id", "name"});
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
posted on 2007-10-29 10:52
流浪汗 閱讀(5912)
評論(1) 編輯 收藏 所屬分類:
JAVA/J2EE