Excel的导入导出简单案例(poi)

poi对Excel的导入导出简单案例,供参考

首先需要导入下面所依赖的JAR包:
poi-3.14-20160307.jar
poi-ooxml-3.14-20160307.jar
poi-ooxml-schemas-3.14-20160307.jar
xmlbeans-2.6.0.jar

**这是Maven导入配置**

<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi</artifactId>
	<version>3.11</version>
</dependency>
		
<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi-ooxml</artifactId>
	<version>3.11</version>
</dependency>

<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi-ooxml-schemas</artifactId>
	<version>3.11</version>
</dependency>

点击下载案例代码

下面就开始吧,实现代码如下


import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.OutputStream;  
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
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;  
import org.apache.poi.xssf.usermodel.XSSFWorkbook;  
 
/**
 * 导入和导出Excel文件类 
 * 支持2003(xls)和2007(xlsx)版本的Excel文件 
 * @author ZhouMengShun
 */
public class ExcelUtil {  
  
    /**
     * 导入Excel  
     * @param execelFile 表示Excel文件路径
     */
    public void impExcel(String execelFile){  
        try {  
             
            Workbook book = null;//构造 Workbook对象 
            try {  
                //Excel 2007获取方法  
                book=new XSSFWorkbook(new FileInputStream(execelFile));  
            } catch(Exception ex){  
                //Excel 2003获取方法  
                book=new HSSFWorkbook(new FileInputStream(execelFile));  
            }  
              
            //读取表格的第一个sheet页  
            Sheet sheet = book.getSheetAt(0);                
            
            int totalRows=sheet.getLastRowNum();//获取总行数,从0开始  
            
            //循环输出表格中的内容,首先循环取出行,再根据行循环取出列 (第一行索引是0,从1开始读的话可以去掉头部)
            for (int i = 0; i <= totalRows; i++) {  
            	
            	Row row = sheet.getRow(i);//获取行
                
                if(row == null){//处理空行  
                    continue ;  
                }  
                
                int totalCells=row.getLastCellNum();//总共有多少列,从0开始  
                for (int j = row.getFirstCellNum(); j < totalCells; j++) {  
                      
                    if(row.getCell(j)==null){//处理空列 
                        continue ;  
                    }
                    
                    //调用getStringCellValue方法转换列内容格式
                    //如只需要字符格式,可通过 row.getCell(j).toString()获取单元格内容
                    String cell=getStringCellValue(row.getCell((short)j)).trim();
                    
                    System.out.print(cell + "\t");  
                }  
                System.out.println("");  
            }  
        
        } catch (Exception e) {  
            e.printStackTrace();  
        } 
    }  
    
    
    
    /**
     * 转换单元格内容,这里返回字符串
     * @param cell Excel 单元格
     * @return String 返回单元格数据内容
     */
    public String getStringCellValue(Cell cell) {
    	
    	if (cell==null){//列为空
            return null;
        }
    	
    	String strCell = "";
        switch(cell.getCellType()){
	        case HSSFCell.CELL_TYPE_STRING://字符串类型
	            //也可通过cell.toString()获取单元格内容
	        	strCell = cell.getStringCellValue();
	            break;
	        case HSSFCell.CELL_TYPE_NUMERIC://数字类型
	        	
	        	// 判断当前的cell是否为Date,如果是Date类型则,转化为Data格式
	        	if (HSSFDateUtil.isCellDateFormatted(cell)) {
	                
	            	//方法1:这样子的data格式是带时分秒的:2011-10-12 0:00:00
	                //strCell=cell.getDateCellValue().toLocaleString();
	                
	                //方法2:这样子的data格式是不带带时分秒的:2011-10-12
	                Date date = cell.getDateCellValue();
	                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	                strCell = sdf.format(date);
	                
	            }else{//如果是纯数字
	            	strCell=String.valueOf(cell.getNumericCellValue());//取得当前Cell的数值
	            }
	        	
	            break;
	        case HSSFCell.CELL_TYPE_BOOLEAN://布尔(boolean)类型
	           
	        	strCell = String.valueOf(cell.getBooleanCellValue());
	            break;
	        case HSSFCell.CELL_TYPE_BLANK://为空类型
	            
	        	strCell = "";
	            break;
	         
	        default:
	            
	        	strCell = "";
	            break;
        }
        
        return strCell;
    }
    
      
    /**
     * 导出Excel
     * @param expFilePath 表示Excel文件路径
     */
    public void expExcel(String expFilePath){  
        
    	OutputStream os=null;  
        Workbook book=null;  
        try {  
            os = new FileOutputStream(expFilePath);//创建输出流    
            book = new HSSFWorkbook();//创建工作区(97-2003)  
            Sheet sheet= book.createSheet("test");//创建第一个sheet页  
            
            //========= 创建行数据开始 ,多行数据该处可以用循环创建=============== 
            
            //创建行 ,0表示第一行,以此类推
            Row row = sheet.createRow(0);
            
            //给第一行的第一列赋值,0表示第一列,以此类推
            row.createCell(0).setCellValue("第一列");
            
            //给第一行的第二列赋值,0表示第一列,以此类推  
            row.createCell(1).setCellValue("第二列"); 
            
            //给第一行的第三列赋值,0表示第一列,以此类推  
            row.createCell(2).setCellValue("第三列"); 
            
            //================ 创建行数据结束   ========================
           
            
            book.write(os);//写文件 
              
        }catch(Exception e){  
            e.printStackTrace();  
        }finally {
            try {  
                os.close();//关闭输出流  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
          
    }  
   
    
    public static void main(String[] args) {   
        
        //导入Excel 2007
        //new ExcelUtil().impExcel("E:/input.xlsx");
        
        //导入Excel 2003
        new ExcelUtil().impExcel("E:/input.xls");
       
    	//导出Excel   
        //new ExcelUtil().expExcel("E:/outPut.xls");  
    }  
    
    
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值