Apache POI的具体使用方法
下载文件目录如下:
搭建环境:在目标工程右键选择Properties,选择如下对话框中的Java Build Path中的Libraries,再选择Add External JARs,添加刚才目录下的Poi-version-date.jar包即可。
总体思想:Apache POI提供了WorkBook类,Sheet类,Row类,Cell类。从输入流中依次读入WorkBook,从而获取Sheet,Row,从而获取Cell。可以读取Cell中的数据,或者修改此Cell内的数据。
但是要注意的是,这时仅仅是修改了从输入流中读取的实例化的WorkBook类,若想输出该变化,最终要将WorkBook通过输出流来改变具体的文件。
同时,Apache POI对空单元格的处理是,对于该cell的指针置空(null),故若想修改空的单元格,最好对目标Excel文件预处理,加入NULL关键字,即可获取其指针再对其值修改。
Apache POI处理示例:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
public class test {
private static Workbook wb;
private static int SheetNum = 0; //读取的表格号
private static int CellNum = 0; //读取第几个cell
public static void main(String[] args) throws Exception {
String ifile = "IN.xls"; //输入文件的地址
String ofile = "OUT.xls"; //输出文件的地址
FileInputStream fis = new FileInputStream(ifile);
FileOutputStream fos = new FileOutputStream(ofile);
wb = new HSSFWorkbook(fis); //从输入流实例化workbook
if (wb != null) {
Sheet sheet = wb.getSheetAt(SheetNum); //打开workbook中SheetNum的表格
int totalRows = sheet.getPhysicalNumberOfRows(); //获取总行数
for (int r = 1; r < totalRows; r++) { //遍历每一行的数据
Row row = sheet.getRow(r);//获取第r行的row对象
if (row == null) continue;
Cell cell = row.getCell(CellNum);//获取第CellNum的数据,同时可以利用 row.getPhysicalNumberOfCells() 来遍历列
String old = cell.getStringCellValue();//获取原cell内容
if("NULL".equals(old)) old = ""; //若为标记单元格,清空
old += "After modify";
cell.setCellValue(new HSSFRichTextString(old));//设置修改后的内容
wb.write(fos); //将workbook写入输出流
System.out.println("Done");
fos.close(); //关闭输入输出流
fis.close();
}
}