首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

读取excel表格中的数据,并存放到二维数组中解决方案

2012-05-01 
读取excel表格中的数据,并存放到二维数组中【急】求助各位高人帮忙,题是一个有excel表格,该表格是5*5的单元

读取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(",");

热点排行