日期:2014-05-20  浏览次数:20757 次

读取excel表格中的数据,并存放到二维数组中
【急】求助各位高人帮忙,题是一个有excel表格,该表格是5*5的单元格,每个单元格存储的是2-5个整数,我已经读取了excel表中的所有数据,存放到了集合中,但是我想把每个单元格的数据拆分,变成整形的数据存放到另一个集合中,而每个集合中存储的数据就是相对的每个单元格的数据,也就是说集合中的每个索引存放的是excel表格中每个单元格存放的个数。而我现在的问题是,当所有的字符串剪切了之后,存放的是一个一维的数组里,并没有按照excel表格中的单元格中的数据存储到二维的集合中?求高人解答!!
以下是我的代码:
/**获取excel表*/
public static Sheet getSheet(){
Sheet sheet = null;
try {
InputStream is=new FileInputStream("e:\\stu.xls");
jxl.Workbook rwbWorkbook=Workbook.getWorkbook(is);
sheet=rwbWorkbook.getSheet(2);
} catch (Exception e) {
e.printStackTrace();
}
return sheet;
}
/**获取单元格的全部内容,并添加到集合中*/
public static ArrayList<Integer>[][] addArrayList(int c,int d){
ArrayList<Integer>[][] arrList=new ArrayList[c][d];
ArrayList<Integer> list=new ArrayList<Integer>();
Sheet sheet=getSheet();
Vector v=new Vector();
//获取所有单元格的数据
int rsColumns = sheet.getColumns();
//获取Sheet表中所包含的总行数
int rsRows = sheet.getRows();
//获取指定单元格的对象引用
for(int i=0;i<rsRows;i++){
for(int j=0;j<rsColumns;j++){
Cell cell = sheet.getCell(j,i);
v.add(cell.getContents());

}
}

//将截取的每个字符添加到集合中,在将字符串中的数据转换成整形
//for(int a=0;a<arrList.length;a++){
// for(int b=0;b<arrList[a].length;b++) {
for(int i=0;i<v.size();i++){
//将集合中的元素按","截取,
String[] s =v.get(i).toString().split(",");
 
list.add(Integer.parseInt(s.toString())); 
 
}
Iterator<Integer> it=v.iterator();
while(it.hasNext()){
Integer i= it.next();
System.out.println(i+"*******");
}
//}System.out.println(arrList[a][b]);

// } 
//}

return arrList;
}

------解决方案--------------------
其实应该是个三维数组吧感觉。因为你原本就是个5*5的表单了,然后每个cell里面还要把数字截成数组。这不就是个三维的数组来吗
------解决方案--------------------
是不是要这种效果?
Java code

    public static void main(String[] args) throws Exception {
        Workbook book = null;
        book = Workbook.getWorkbook(new File("C:\\Documents and Settings\\pKF58059\\桌面\\tab.xls"));
        //获取sheet
        Sheet sheet = book.getSheet(0);
        int rows = sheet.getRows();
        int cols = sheet.getColumns();
        int[][][] tab = new int[rows][cols][];
        for(int r = 0; r < rows; r++){
            Cell[] rowCells = sheet.getRow(r);
            for(int c = 0; c < cols; c++){
                Cell cell = rowCells[c];
                String value = cell.getContents();
                String[] items = value.split(",");
                int[] values = new int[items.length];
                for(int i = 0; i < items.length; i++){
                    values[i] = Integer.parseInt(items[i]);
                }
                tab[r][c] = values;
            }
        }
        
        for(int x = 0; x < tab.length; x++){
            for(int y = 0; y < tab[x].length; y++){
                for(int z = 0; z < tab[x][y].length; z++){
                    System.out.println("第" + x + "行,第" + y +"列的第" + z + "个数据是:" + tab[x][y][z]);
                }
            }
        }
    }

------解决方案--------------------
String value = cell.getContents();
value.replaceAll("\\s+", "");
if(value.equals("")){
continue;
}
String[] items = value.split(",");