各位高手 
   我有一个excel表格 里面有多个sheet 没个sheet格式不一样 我想读取怎么做啊 

解决方案 »

  1.   

    import java.io.File;
    import java.util.HashMap;
    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;public class Xls {
    public static void main(String args[]) {
    try {
    Workbook book = Workbook.getWorkbook(new File("D:\\aa.xls"));
    // 获得第一个工作表对象
    Sheet sheet = book.getSheet(0);
    // 得到第一列第一行的单元格
    // System.out.println(sheet.getColumns());//获得列数
    // System.out.println(sheet.getRows());//获得行数
    // Cell cell1 = sheet.getCell(0, 0);//获得第一行第一列的cell
    // System.out.println(cell1.getContents());//获得cell中的内容
    // List<CellBean> lc = new ArrayList<CellBean>();
    HashMap<String, String> m = new HashMap<String, String>();
    for (int i = 0; i < sheet.getRows(); i++) {
    for (int j = 0; j < sheet.getColumns(); j++) {
    Cell cell = sheet.getCell(j, i);
    m.put(i + "" + j, cell.getContents());
    System.out.println("j:" + j + " i:" + i + " cell:"
    + cell.getContents());
    }
    } // 打开文件
    WritableWorkbook wb = Workbook.createWorkbook(new File(
    "D:\\new.xls"));
    // 生成名为“Sheet1”的工作表,参数0表示这是第一页
    WritableSheet ws = wb.createSheet("Sheet1", 0);
    // //在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
    // //以及单元格内容为test
    // Label label=new Label(0,0,"test");
    // //将定义好的单元格添加到工作表中
    // ws.addCell(label);
    // /*生成一个保存数字的单元格
    // 必须使用Number的完整包路径,否则有语法歧义
    // 单元格位置是第二列,第一行,值为789.123*/
    // jxl.write.Number number = new jxl.write.Number(1,0,789.123);
    // ws.addCell(number);
    for (int i = 0; i < sheet.getRows(); i++) {
    for (int j = 0; j < sheet.getColumns(); j++) {
    ws.addCell(new Label(j, i, m.get(i + "" + j)));
    }
    }
    // 写入数据并关闭文件
    book.close();
    wb.write();
    wb.close();
    System.out.println("create ok!");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
      

  2.   

    这就是用面向对象来取消switch判断的应用啊可以写一个读取固定格式数据的接口,比如public List<Map> getDate(Sheet);然后对于每种sheet定义个reader实现这个接口,
    然后的事情...哗~~世界清静了good luck
      

  3.   

    把每个sheet名称定义好 在程序里循环获取sheet判断名称 用不同的流程处理
      

  4.   


    http://blog.csdn.net/fei1502816/article/details/6957191
    我博客有个例子,你可以去看看,挺全的