POI常用功能整理

1.读取excel文件

读取.xlsx常见方式有:

1. Workbook wb = new XSSFWorkbook(new FileInputStream(fileName));
2. Workbook wb = WorkbookFactory.create( new File(filename));

读取.xls常见的方式有:

1. Workbook wb = new HSSFWorkbook(new FileInputStream(fileName));
2. Workbook wb = WorkbookFactory.create( new File(filename));

2.新建一个workbook

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet(sheetName);
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue(""); //设置单元格内容
cell.setCellStyle(cellStyle); //设置单元格风格

//将上面创建的workbook写出到excel文件,后缀为.xls
FileOutputStream output = null;
try {
	output = new FileOutputStream(filename);
	wb.write(output);
	output.flush(); 
	System.out.println("Successfullt export excel file!");
} catch (Exception e) {
	e.printStackTrace();
}finally {
	try {
		output.close();
		wb.close();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

3.常用的cellstyle

//设置单元格样式
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框  
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框  
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框  
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中 
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //垂直居中
cellStyle.setWrapText(true);//自动换行
cellStyle2.setFillForegroundColor(HSSFColor.RED.index); //设置背景颜色
cellStyle2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//设置填充格式

4.合并单元格

// 表示从【first row,firstcol】 到【lastrow,lastcol】 将这块区域合并为一个单元
// 需要注意 如果合并单元格也要有样式,可以对区域内每个单元格都设置样式,这样合并之后就不会覆盖掉样式
sheet.addMergedRegion(new CellRangeAddress(firstRow, lastRow, firstCol, lastCol));

5.获取所有子表的全部内容

public static  void showExcel() throws Exception {
        HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(fileName));
        HSSFSheet sheet=null;
        for (int i = 0; i < workbook.getNumberOfSheets(); i++) {//获取每个Sheet表
             sheet=workbook.getSheetAt(i);
             for (int j = 0; j < sheet.getPhysicalNumberOfRows(); j++) {//获取每行
                HSSFRow row=sheet.getRow(j);
                for (int k = 0; k < row.getPhysicalNumberOfCells(); k++) {//获取每个单元格
                    System.out.print(row.getCell(k)+"\t");
                }
                System.out.println("---Sheet表"+i+"处理完毕---");
            }
    }
}

6.往现有表中添加不定量条记录

// 调用这个添加方法,一次调用添加一条
private static void insert(String info) {
	//hssf默认一张sheet只能添加65535个数据,所有需要数据量超过需要换sheet!
	if(count % 65535==0) {
		sheet = wb.createSheet();
		WriteLabel = true;
		count = 0;
	}
	
	Row r = sheet.createRow(count++);
	for(int i=0;i<17;i++) {
		Cell c = r.createCell(i);
		c.setCellValue(String.valueOf(info));
	}
}

7.注意事项

新创建生成的表,如果有创建空行,即执行了row = sheet.createRow但是没有往里面添加内容,报错以后,如果没有进行改动(人工打开生成的表格进行修改),那程序再次读取时 row!=null 但是 cell == null,因为并没有创建cell!如果有改动,再次读取时row==null !

你可能感兴趣的:(other,stuff)