欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

POI对Excel的各种操作

程序员文章站 2022-07-13 14:20:00
...

POI操作Excel


最近用到poi对Excel的导入导出,查阅了一下资料 不经意找到一个详细的说明:
在这里记录一下。
EXCEL常用操作方法:

1、 得到Excel常用对象

POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls"));     
//得到Excel工作簿对象      
HSSFWorkbook wb = new HSSFWorkbook(fs);    
//得到Excel工作表对象      
HSSFSheet sheet = wb.getSheetAt(0);     
//得到Excel工作表的行      
HSSFRow row = sheet.getRow(i);    
//得到Excel工作表指定行的单元格      
HSSFCell cell = row.getCell((short) j);    
cellStyle = cell.getCellStyle();//得到单元格样式    
POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls"));   
//得到Excel工作簿对象   
HSSFWorkbook wb = new HSSFWorkbook(fs);  
//得到Excel工作表对象   
HSSFSheet sheet = wb.getSheetAt(0);   
//得到Excel工作表的行   
HSSFRow row = sheet.getRow(i);  
//得到Excel工作表指定行的单元格   
HSSFCell cell = row.getCell((short) j);  
cellStyle = cell.getCellStyle();//得到单元格样式  

2、建立Excel常用对象

HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象     
HSSFSheet sheet = wb.createSheet("new sheet");//创建Excel工作表对象       
HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行     
cellStyle = wb.createCellStyle();//创建单元格样式     
row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格     
row.createCell((short)0).setCellValue(1); //设置Excel工作表的值    
HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象  
HSSFSheet sheet = wb.createSheet("new sheet");//创建Excel工作表对象    
HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行  
cellStyle = wb.createCellStyle();//创建单元格样式  
row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格  
row.createCell((short)0).setCellValue(1); //设置Excel工作表的值  

3、设置sheet名称和单元格内容

wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16);            
cell.setEncoding((short) 1);        
cell.setCellValue("单元格内容");    
wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16);          
cell.setEncoding((short) 1);      
cell.setCellValue("单元格内容");   

4、设置列宽、行高

sheet.setColumnWidth((short)column,(short)width);        
row.setHeight((short)height);      
sheet.setColumnWidth((short)column,(short)width);      
row.setHeight((short)height);   

5、保存Excel文件

FileOutputStream fileOut = new FileOutputStream(path);     
wb.write(fileOut);     
FileOutputStream fileOut = new FileOutputStream(path);   
wb.write(fileOut);   

没用到太多,所以就找了这一点

补充一个读取excel单元格,获取单元格各类型值,返回字符串类型

 //获取单元格各类型值,返回字符串类型
    private static String getCellValueByCell(Cell cell) {
        //判断是否为null或空串
        if (cell==null || cell.toString().trim().equals("")) {
            return "";
        }
        String cellValue = "";
        int cellType=cell.getCellType();
        if(cellType==Cell.CELL_TYPE_FORMULA){ //表达式类型
            cellType=evaluator.evaluate(cell).getCellType();
        }
         
        switch (cellType) {
        case Cell.CELL_TYPE_STRING: //字符串类型
            cellValue= cell.getStringCellValue().trim();
            cellValue=StringUtils.isEmpty(cellValue) ? "" : cellValue; 
            break;
        case Cell.CELL_TYPE_BOOLEAN:  //布尔类型
            cellValue = String.valueOf(cell.getBooleanCellValue()); 
            break; 
        case Cell.CELL_TYPE_NUMERIC: //数值类型
             if (HSSFDateUtil.isCellDateFormatted(cell)) {  //判断日期类型
                 cellValue =    DateUtil.formatDateByFormat(cell.getDateCellValue(), "yyyy-MM-dd");
             } else {  //否
                 cellValue = new DecimalFormat("#.######").format(cell.getNumericCellValue()); 
             } 
            break;
        default: //其它类型,取空串吧
            cellValue = "";
            break;
        }
        return cellValue;
    }

参考以及引用文章:

https://lilinhui.iteye.com/blog/1163040