`
bannamoon
  • 浏览: 51596 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA写excel

    博客分类:
  • JAVA
阅读更多
在用JXL写入EXCEL文件时遇到一个比较奇怪的问题。例如每次写入一行之后,紧接着调用WritableWorkbook对象的write()方法,最终写出的EXCEL文件里面没有实际内容,但是文件大小信息正确。最后我将write()方法的调用放在释放WritableWorkbook对象之前调用。能正确写入。期待高手能解释一下原因
public class ExcelWriter {
	private WritableWorkbook workBook = null;
	private WritableSheet sheet = null;
	private Label label = null;
	//表行号
	private int index = 0;
	
	/**
	 * 初始化EXCEL写入类
	 * @param sheetName		EXCEL表名
	 * @param header		EXCEL表表头
	 * @param filePath		EXCEL文件路径
	 */
	public void init(String sheetName, String[] header, String filePath){
		try {
			index = 0;
			workBook = Workbook.createWorkbook(new File(filePath));
			sheet = workBook.createSheet(sheetName, 0);
			//写入表头
			if(header!=null){
				for(int i=0; i< header.length; i++){
					label = new Label(i, 0, header[i]);
					sheet.addCell(label);
				}
				index++;
			}
		} catch (RowsExceededException e) {
			e.printStackTrace();
		} catch (WriteException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 写入一行
	 * @param row	表行
	 */
	public void write(String[] row){
		if(row==null){
			return;
		}
		try {
			for(int i=0; i<row.length; i++){
				label = new Label(i, index, row[i]);
				sheet.addCell(label);
			}
			index++;
		} catch (RowsExceededException e) {
			e.printStackTrace();
		} catch (WriteException e) {
			e.printStackTrace();
		} 
	}
	
	/**
	 * 文件写入及释放
	 */
	public void release(){
		try {
			workBook.write();
			workBook.close();
		} catch (WriteException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics