请问各位大虾:
   如何 拷贝一张已有的sheet 到 另一个workbook中 ?
   除了 循环拷贝每个单元格 这一方法之外 有没其他方法?
   还有 如果  循环拷贝每个单元格 又如何获取文本框,图片.自选图形等信息
=======================谢了===================================

解决方案 »

  1.   

    sheet是对象啊!!给你个建议进行对象clonesheet2 = sheet1.clone();
      

  2.   

    从一个workbook copy到另一个workbook还没有解决方案.
      

  3.   

    poi里没有把sheet从一个book拷到另外一个book的方法
      

  4.   

    建设使用JXL,使用JXL就很简单了,
    File   inputWorkbook   =   new   File(input);   
    File     outputWorkbook   =   new   File(output);   
        
    Workbook   w1   =   Workbook.getWorkbook(inputWorkbook);   
    WritableWorkbook   w2   =   Workbook.createWorkbook(outputWorkbook,   w1);   
        
    w2.write();   
    w2.close();
      

  5.   

    我用JXL的 Workbook 类里面的importSheet()方法 是可以实现 从一个workbook copy到另一个workbook的.可以取看一下JXl的源码,好像是WritebleSheetImple.java 里是有Copy之类的方法的,但是API的是无法掉的,不知道为什么?还有,用importSheet()方法时 老是报空指针异常(针对复杂一点的Sheet) 不知道是他的API写的有漏斗还是咋会事?代码大致如下:。
     List<String> toBeCombFileList=new ArrayList();// 存放待合并Excel文件的路径。
     String finalFileName;//合并后的Excel文件名
    toBeCombFileList.add("D:/temp/b.xls");
    toBeCombFileList.add("D:/temp/c.xls");
    toBeCombFileList.add("D:/temp/d.xls");//实际是从图形界面中获得的参数
    finalFileName="D:/temp/final.xls";//实际从图形界面中获得该参数
    WritableWorkbook wwb = null;  
    try{
    wwb = Workbook.createWorkbook(new File(finalFileName)); 
    List<Sheet> sheetList=new ArrayList();//用来存放取得sheet的List
    List<String> sheetNameList=new ArrayList();//存放sheet名字的List
    try{
    for(int i=0;i<toBeCombFileList.size();i++){
    String excelFileName=(String)toBeCombFileList.get(i);
    Workbook  book = Workbook.getWorkbook(new File(excelFileName));
    for (int numSheets = 0; numSheets < book.getNumberOfSheets(); numSheets++) {
    if(book.getSheet(numSheets)!=null){
    Sheet  sheet = book.getSheet(numSheets);// 获得一个sheet
    sheetList.add(sheet);
    sheetNameList.add(sheet.getName());
    }
    }
    }
    }catch(Exception e){e.printStackTrace();}
    for(int i=0;i<sheetList.size();i++){//根据上面得到的sheet名字 创建空的sheet
    wwb.importSheet(sheetNameList.get(i), i, sheetList.get(i));//最核心的方法!!!!!对于复杂一点的Sheet 老是报NullPointException 郁闷!!
    }
     //写入数据并关闭文件
    wwb.write();
    wwb.close();
    }catch(Exception e)
    {
    e.printStackTrace();
    }
      

  6.   

    foundercy_weng 你说的clone 具体怎么做啊? 能不能贴点具体代码上来?大家讨论讨论嘛
      

  7.   

    diy8187 : 你的代码我好像在网上见过,没看明白,是你没理解我的意思 还是
      

  8.   

    JXL的importsheet()方法是可以实现从一个book到另一个book的复制,但是对于复杂点的表格就报错,为什么呢? 那位大侠给点解决方案啊,急啊~~~
      

  9.   

    郁闷!我也碰到这个问题!2003下报的是空指针,但是95的文件就报
    “jxl.common.AssertionFailed
    at jxl.common.Assert.verify(Assert.java:37)
    at jxl.SheetSettings.<init>(SheetSettings.java:332)”错误!jxl.Workbook workbook = null;
    try {
    workbook = jxl.Workbook.getWorkbook(new File(filePath));
    //获得源文件的所有sheet的集合
    jxl.Sheet Mysheets[] = workbook.getSheets();
    WritableWorkbook writableWorkbook = null;
    System.out.println("length:"+Mysheets.length);
    for (int i = 0; i < Mysheets.length; i++) {
    //创建一个待写的Excel,文件名为sheet名字
    writableWorkbook = jxl.Workbook.createWorkbook(new File(
    Mysheets[i].getName()+".xls"));
    // writableWorkbook = jxl.Workbook.createWorkbook(new File(
    // sheets[i].getName()+".xls"),workbook);
    writableWorkbook.importSheet(Mysheets[i].getName(), i, Mysheets[i]);
    writableWorkbook.write();
    // try {
    // if(writableWorkbook!=null){
    //// writableWorkbook.removeSheet(0)
    // writableWorkbook.close();
    // }
    // } catch (WriteException e) {
    // e.printStackTrace();
    // }
    }
    } catch (BiffException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }