我用的是JXL做的,但为什么导出的EXCEL里面没有数据呢?
下面是我的生成代码:
public   static   void  CreateExcel() {
      
      try{
      WritableWorkbook book= 
      Workbook.createWorkbook(new File("测试.xls")); 
      //生成名为“第一页”的工作表,参数0表示这是第一页 
      WritableSheet sheet=book.createSheet("第一页",0); 
      //在Label对象的构造子中指名单元格位置是第一列第一行(0,0) 
      //以及单元格内容为test 
      Label label=new Label(0,0,"test"); 
      //将定义好的单元格添加到工作表中 
      sheet.addCell(label); 
      /*生成一个保存数字的单元格 
      必须使用Number的完整包路径,否则有语法歧义 
      单元格位置是第二列,第一行,值为789.123*/ 
      jxl.write.Number number = new jxl.write.Number(1,0,789.123); 
      sheet.addCell(number); 
      //写入数据并关闭文件 
      book.write(); 
      book.close(); 
    }  catch  (Exception e) {
        System.out.println(e);
    }
     }

解决方案 »

  1.   

    在我这边调试生成的excel正常,值插入正确
      

  2.   

    补充给你个提示
    如果是长数字避免以科学技术法在excel中显示的话,可在数字前加英文的单引号进行解决
      

  3.   

    看代码正常,语法正确,你看看你的程序其他地方有没有异常,比如你调用这个CreateExcel() 的地方之前之后有没有什么问题
      

  4.   

    我是在JSP中生成了一个新的EXCEL,
    try{
    response.reset();//清除Buffer
    response.setContentType("application/vnd.ms-excel");
    File fileWrite = new File("f:/testWrite.xls");
    fileWrite.createNewFile();
    new FileOutputStream(fileWrite);
    excel.writeExcel(new FileOutputStream(fileWrite));
    }catch(Exception e){
        System.out.println(e);
    }
    服务启动后页面提示打开还是保存EXCEL,我保存下来打开是空的,但在f:/testWrite.xls这打开这个文件里又是对的,请问为什么页面上打开的EXCEL是空的呢?
      

  5.   


    你把路径改下:
             response.setContentType("application/vnd.ms-excel"); 
             OutputStream os = response.getOutputStream();
            WritableWorkbook book = Workbook.createWorkbook(os);
            WritableSheet sheet=book.createSheet("first",0);
            ……
      

  6.   

    嗯 ,在JAVA代码中我已经改成
    public   static   void  CreateExcel(OutputStream os) {
          
          try{
          WritableWorkbook book= 
          Workbook.createWorkbook(os); 
          //生成名为“第一页”的工作表,参数0表示这是第一页 
          WritableSheet sheet=book.createSheet("第一页",0); 
          //在Label对象的构造子中指名单元格位置是第一列第一行(0,0) 
          //以及单元格内容为test 
          jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true); 
          jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf); 
          Label label=new Label(0,0,"test",wcfF); 
          //将定义好的单元格添加到工作表中 
          sheet.addCell(label);       
          /*生成一个保存数字的单元格 
          必须使用Number的完整包路径,否则有语法歧义 
          单元格位置是第二列,第一行,值为789.123*/ 
          jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##"); 
          jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf); 
          jxl.write.Number number = new jxl.write.Number(1,0,789.123,wcfN); 
          sheet.addCell(number); 
          //写入数据并关闭文件 
          book.write(); 
          book.close(); 
        }  catch  (Exception e) {
            System.out.println(e);
        }
         }
    但在页面上打开时还是空的,但在f:/testWrite.xls这个目录下打开是有数据的
      

  7.   

    你要把os = response.getOutputStream(); 别忘了啊
      

  8.   

    光有传递个参数os有什么用,要获得一下呢public  static  void  CreateExcel(OutputStream os) { 
        
        try{ 
             os = response.getOutputStream(); 
          …… 
      

  9.   

    我OS是重新面调用时传过来的,还要这样取吗?
    excel.writeExcel(new FileOutputStream(fileWrite));
      

  10.   


    你也别写什么传递参数了
    我直接把代码写全public  static  void  CreateExcel() { 
        
        try{
         response.setContentType("application/vnd.ms-excel"); 
         OutputStream os = response.getOutputStream();
         WritableWorkbook book=Workbook.createWorkbook(os); 
        //生成名为“第一页”的工作表,参数0表示这是第一页 
        WritableSheet sheet=book.createSheet("第一页",0); 
        //在Label对象的构造子中指名单元格位置是第一列第一行(0,0) 
        //以及单元格内容为test 
        jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true); 
        jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf); 
        Label label=new Label(0,0,"test",wcfF); 
        //将定义好的单元格添加到工作表中 
        sheet.addCell(label);    
        /*生成一个保存数字的单元格 
        必须使用Number的完整包路径,否则有语法歧义 
        单元格位置是第二列,第一行,值为789.123*/ 
        jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##"); 
        jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf); 
        jxl.write.Number number = new jxl.write.Number(1,0,789.123,wcfN); 
        sheet.addCell(number); 
        //写入数据并关闭文件 
        book.write(); 
        book.close(); 
        }  catch  (Exception e) { 
            System.out.println(e); 
        } 
        } 
      

  11.   

    我是基于WEBSERVICE做的,这样是可以在创建的EXCEL中填入数据,但运行时,页面上提示打开时里面是空的呢?在存放文件的打方打开是正确的