java+jsp来获取excel的数据?

首先我会在jsp页面上给用户一个上传组件,然后用户上传excel~然后自动后台去解析excel里面的数据,

我看了下网上的jxi和poi 都没怎么找到详细点的教程,希望有做过excel的师兄指点下..

我主要是想看下jxl或者poi

如何去获得excel中指定列的数据,因为我要把它放到数据库中的指定列里面去,然后jsp页面遍历显示..

:lol: 不知道描述的清楚不.
[b]问题补充:[/b]
还有 ,jxl和poi 到底选择哪个好呢?

Java Excel API提供了许多访问Excel数据表的方法
Workbook类提供的方法
1. int getNumberOfSheets()
获得工作薄(Workbook)中工作表(Sheet)的个数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
int sheets = rwb.getNumberOfSheets();
2. Sheet[] getSheets()
返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
Sheet[] sheets = rwb.getSheets();

Sheet接口提供的方法
1. String getName()
获取Sheet的名称,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
String sheetName = rs.getName();
2. int getColumns()
获取Sheet表中所包含的总列数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
int rsColumns = rs.getColumns();
3. Cell[] getColumn(int column)
获取某一列的所有单元格,返回的是单元格对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell[] cell = rs.getColumn(0);
4. int getRows()
获取Sheet表中所包含的总行数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
int rsRows = rs.getRows();
5. Cell[] getRow(int row)
获取某一行的所有单元格,返回的是单元格对象数组,示例子:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell[] cell = rs.getRow(0);
6. Cell getCell(int column, int row)
获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,这与通常的行、列组

我想
Cell[] getColumn(int column)
获取某一列的所有单元格,返回的是单元格对象数组,
是你需要的

有蛮详细的文章嘛
http://www.iteye.com/topic/55844
http://www.iteye.com/topic/63001
http://www.iteye.com/topic/320478

POI的API很清楚的
[code="java"] try {
fs = new POIFSFileSystem(new FileInputStream("d:\test.xls"));
wb = new HSSFWorkbook(fs); //获得HSSFWorkbook
} catch (IOException e) {
e.printStackTrace();
}
HSSFSheet sheet = wb.getSheetAt(0); //获得sheet
HSSFRow row = sheet.getRow(0); //获得行
HSSFCell cell = row.getCell((short) 0);//单元格
String msg = cell.getStringCellValue(); //这里比较老的,旧的API,有新的替代方法,不同的类型有不同的取值方法,看API
[/code]

两个都还行,只要能满足你的需求就行了,别太钻

技术没有好坏,关键看使用的人。那个顺手就用哪个?

poi相对更好点,下面是我曾经用过的代码,写得不是很好,可以初学的时候来学下

[code="java"]
private List readExcel(String filepath){
HSSFWorkbook workbook = null;
HSSFSheet sheet = null;
List data = new ArrayList();

try{
workbook = new HSSFWorkbook(new FileInputStream(filepath));
sheet = workbook.getSheet("Sheet1");

        int rows = sheet.getPhysicalNumberOfRows(); 

        for (int r = 0; r < rows; r++){ 
            HSSFRow row = sheet.getRow(r); 
            if (row != null){ 

                String[] value = new String[8];                   

                for (short c = 0; c < 8; c++){ 
                    HSSFCell cell = row.getCell(c); 
                    if (cell != null){ 
                        switch (cell.getCellType()){ 
                            case HSSFCell.CELL_TYPE_FORMULA: 
                                break; 
                            case HSSFCell.CELL_TYPE_NUMERIC: 
                                value[c] =  String.valueOf(cell.getNumericCellValue()); 
                                break; 
                            case HSSFCell.CELL_TYPE_STRING: 
                                value[c] = cell.getStringCellValue(); 
                                break; 
                            default: 
                                value[c] = "";
                        } 
                    }else{                                     
                        value[c] = "";
                    }

                    System.out.println(value[c]);
                } 
                data.add(value);
            } 
        }
    }catch(Exception e){
        e.printStackTrace();
    }
    return data;
}

[/code]

[quote]技术没有好坏,关键看使用的人。那个顺手就用哪个?[/quote]
哪个顺手就用哪个?

补充
[code="java"]
String[] value = new String[8];

            for (short c = 0; c < 8; c++){   

[/code]

这里的8是指总共的列数,你可以设置成变量

你可以对比一下这两种解决方案各自的优缺点,然后结合自己的具体需求,你就能在恰当的时候做出正确的选择。