今天工作中再次用的WritableSheet,这个东西两年前用过一次,当时没怎么仔细研究,现在几乎全忘了。因为今天要做的是创建一个excel并向文件中写入内容,而且还可修改该文件的内容。
下载了个jxl的api,看到WritableSheet中根本没有类似getWritableSheet的方法来获取WritableSheet,Workbook中的createWorkbook倒是能创建WritableWorkbook,但由于看到是以“create”开头,我误以为该方法只能创建新的WritableWorkbook,而不能修改已存在的WritableWorkbook。所以找翻了好一会儿api。最终无果告终,无奈下试着用createWorkbook进行了简单的测试,原来该方法是对已存在的文件进行修改。同样WritableSheet sheet = book.createSheet(fileName,0);//如果fileName的sheet存在则修改该sheet。这视乎是个惊喜的发现,因为我差一点就要把创建文件的方法写成创建前判断文件如果存在,则删除并重新创建。
这有可能是我没有仔细认真阅读api导致的错误理解,在此做个记录,以免再犯同样的错误。
/**
*
* 函数名:
* writeToXlsFile
* 功能描述:
* 向excel文件中写入内容
* 修改历史:
* @date 2011-10-25 下午02:04:56
* @author heweina
* @version 1.0
* @description
* 输入、输出参数:
* @param path
* 工程根路径
* @param fileName
* 文件名称
* @param fileSuffix
* 文件后缀
* @param title
* 以“,”分隔的标题行字符串
* @param content
* 以“,”分隔的内容行字符串
* @return
* 写入成功返回true,否则返回false
*/
public static boolean writeToXlsFile(String path, String fileName,String fileSuffix, String title, String content){
boolean flag = false;
try {
WritableWorkbook book = Workbook.createWorkbook(new File(path+File.separator+fileName+fileSuffix));
//生成名为“第一页”的工作表,参数0表示这是第一页
WritableSheet sheet = book.createSheet(fileName,0);
if(title!=null){
String titles[] = title.split(",");
//在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
for(int i=0; i<titles.length; i++){
Label label = new Label(i,0,titles[i]);
//将定义好的单元格添加到工作表中
sheet.addCell(label);
}
}
if(content!=null){
String contents[] = content.split(",");
for(int i=0; i<contents.length; i++){
//从第二行第一列开始写
Label label = new Label(i,1,contents[i]);
//将定义好的单元格添加到工作表中
sheet.addCell(label);
}
}
//写入数据并关闭文件
book.write();
book.close();
flag = true;
} catch (IOException e) {
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
return flag;
}