在Java中,对Excel进行处理有两个流行的Jar包,一个是POI,一个是JXL。jxl是在poi的基础上进行开发的,体积小,方便快捷,经常用的功能都能实现,具体两个有什么区别,请参照一下两个链接,分别转自
lanhuidong和javapub
http://javapub.iteye.com/blog/718056
http://lanhuidong.iteye.com/blog/1553532
本程序所解决的问题是将excel表中的某个单元格中的数据提取出来,然后进行部分操作,再将所得到的结果写入到另外的单元格中,网上大部分实例都是分别对一个excel文件进行读操作或者写操作,并且在进行写操作时几乎都是创建一个新的xls文件,在本例中,解决了对一个excel中的一个sheet进行操作,具体代码如下
Java代码:
import java.io.File;
import jxl.Cell;
import jxl.Workbook;
import jxl.format.CellFormat;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class ReadandWriteExcel {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String filepath = "test.xls";
//以都得方式打开一个excel文件
Workbook workbook = Workbook.getWorkbook(new File(filepath));
//打开文件的一个副本
WritableWorkbook writableWorkbook = Workbook.createWorkbook(new File(filepath), workbook);
//利用writableWorkbook获取文件中的某一个sheet
WritableSheet writableSheet = writableWorkbook.getSheet(0);
//前面是列,后面是行
for(int i=1; i<writableSheet.getRows(); i++) {
//定位某一单元格,前面是列,后面是行
Cell cell = writableSheet.getCell(3, i);
//获取单元格中的内容
String result = cell.getContents();
/**
* 对单元格中的内容进行处理
*/
result = result.substring(6, 10);
result = (2015-Integer.parseInt(result)) + "";
//获取单元格的格式
CellFormat cellFormat = cell.getCellFormat();
//创建一个新的label,也就是创建一个新的单元格
Label label = new Label(2, i, result);
//将label设置成原来的格式
label.setCellFormat(cellFormat);
//将新的单元格加入到原来的sheet中或者添加到新的sheet中
writableSheet.addCell(label);
}
//将原来数据写回
writableWorkbook.write();
//关闭输入流
writableWorkbook.close();
workbook.close();
}
}