Excel导入导出其实非常简单,首先需要一个jxl.jar包,没有的话可以从网上下载一个

 

 

 

一. Excel导入

   

    先在前台页面定义一个获取Excel文件路径的Input

 

 

<input type="file" name="excel" title="Excel文件" />

 

    然后把这个路径传到后台类中

 

 

String excel=request.getParameter("excel");
    Workbook wb = null;    
    try {    
        //构造Workbook(工作薄)对象    
        wb=Workbook.getWorkbook(new File(excel));    
    } catch (BiffException e) {    
        e.printStackTrace();    
    } catch (IOException e) {    
        e.printStackTrace();    
    }    
        
    if(wb==null)    
        return null;    
        
    //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了    
    Sheet[] sheet = wb.getSheets();    
        
    if(sheet!=null&&sheet.length>0){    
        //对每个工作表进行循环    
        for(int i=0;i 
            //得到当前工作表的行数    
            int rowNum = sheet[i].getRows();    
            for(int j=0;j 
                //得到当前行的所有单元格    
                Cell[] cells = sheet[i].getRow(j);    
                if(cells!=null&&cells.length>0){    
                    //对每个单元格进行循环    
                    for(int k=0;k 
                        //读取当前单元格的值    
                        String cellValue = cells[k].getContents();    
                    }    
                }    
            }    
        }    
    }    
    //最后关闭资源,释放内存    
    wb.close();    
}

 

 

 

二. Excel导出

 

    Excel导出在前台页面只需要添加一个到后台类的链接

 

   

   

//response.reset();  如果前面使用过response则需要reset一下
    OutputStream os4 = response.getOutputStream();
 
    response.setContentType("application/msexcel"); 
    response.addHeader("Content-Disposition","attachment; filename="+ new String("旅游团派工单.xls".getBytes("GBK"), "iso-8859-1")); 
    WritableWorkbook wwb = null;    
    try {    
            //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象    
            wwb = Workbook.createWorkbook(os4);    
    } catch (IOException e) {    
            e.printStackTrace();    
    }    
    if(wwb!=null){    
            //创建一个可写入的工作表    
            //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置    
            WritableSheet ws = wwb.createSheet("sheet1", 0);    
                
            //下面开始添加单元格    
            for(int i=0;i<10;i++){    
                for(int j=0;j<5;j++){    
                    //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行    
                    Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");    
                    try {    
                        //将生成的单元格添加到工作表中    
                        ws.addCell(labelC);    
                    } catch (RowsExceededException e) {    
                        e.printStackTrace();    
                    } catch (WriteException e) {    
                        e.printStackTrace();    
                    }    
   
                }    
            }    
   
            try {    
                //从内存中写入文件中    
                wwb.write();    
                //关闭资源,释放内存    
                wwb.close();                os4.flush(); 
                os4.close();    
            } catch (IOException e) {    
                e.printStackTrace();    
            } catch (WriteException e) {    
                e.printStackTrace();    
            }    
        }