本帖最后由 f504501983 于 2011-10-30 12:56:48 编辑

解决方案 »

  1.   

    可以尝试在 模板中定义相关属性
    jxl只填充数据数据希望有帮助
      

  2.   

    sheet.setColumnWidth((short)3,(short)8000);试试这样~
      

  3.   

    其实我现在的问题的重点是怎么让导出excel的时候设置单元格的数据类型为String。求答案~!
      

  4.   

    cell.setCellValue(new HSSFRichTextString("xxxxxxxxxxxxx"));
      

  5.   

     public void exportexcel()
      {
        OutputStream op = null;
        try {
          op = this.response.getOutputStream();
          this.response.setContentType("text/vnd.ms-excel");
          String fileName = this.defaultPermissionTableSchema.getRefTable().getAtrByName("NAME") + ".xls";
          fileName = URLEncoder.encode(fileName, "UTF-8");
          this.response.setHeader("Content-Disposition", "attachment;filename=" + fileName);      openCon();
          WritableWorkbook wwb = Workbook.createWorkbook(op);      WritableSheet ws = wwb.createSheet(this.defaultPermissionTableSchema.getRefTable().getAtrByName("NAME"), 0);      TableSchema ts = this.defaultPermissionTableSchema.getActionTable(1);      WritableFont font1 = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD);
          WritableCellFormat format1 = new WritableCellFormat(font1);
          format1.setAlignment(Alignment.CENTRE);
          format1.setBorder(Border.ALL, BorderLineStyle.THIN);
          for (int i = ts.getSubEntityCount() - 1; i >= 0; i--) {
            FieldSchema fs = (FieldSchema)ts.getSubEntity(i);
            ws.addCell(new Label(i, 1, fs.getAtrByName("NAME"), format1));
          }      font1 = new WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD);
          format1 = new WritableCellFormat(font1);
          format1.setAlignment(Alignment.CENTRE);
          ws.addCell(new Label(0, 0, this.defaultPermissionTableSchema.getRefTable().getAtrByName("NAME"), format1));      font1 = new WritableFont(WritableFont.TIMES, 10, WritableFont.NO_BOLD);
          format1 = new WritableCellFormat(font1);
          format1.setBorder(Border.ALL, BorderLineStyle.THIN);      ws.mergeCells(0, 0, ts.getSubEntityCount() - 1, 0);
          this.tabMng.setReturnType(TableManager.ReturnType.resultset);
          ResultSet rs = (ResultSet)this.tabMng.query();
          int rowindex = 2;      while (rs.next()) {
            for (int i = ts.getSubEntityCount() - 1; i >= 0; i--) {
              FieldSchema fs = (FieldSchema)ts.getSubEntity(i);
              if ((fs.isForeignKey()) || (fs.isYesNo()))
                ws.addCell(new Label(i, rowindex, rs.getString(fs.getFieldCode() + "_N"), format1));
              else {
                ws.addCell(new Label(i, rowindex, rs.getString(fs.getFieldCode()), format1));
              }
            }        rowindex++;
          }
          wwb.write();
          wwb.close();
          this.session.setAttribute("_sys_step_", null);
          this.session.setAttribute("_sys_action_", null);
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      } 以前项目用到的一个导出EXCEL 方法  不懂的请说明 
      

  6.   

    貌似你的没有设置单元格为String的代码
      

  7.   

    我今天解决了一个和你类似的问题,不过我是通过网页导出的,
    给你借鉴一下。
    java具体怎么做,我也不会h+="<td align='center' style='mso-number-format:\"0\";'>"+record[gridColumns[j].field]+"</td>";就是style='mso-number-format:\"0\";'
    mso-number-format代表格式
    \0代表自定义数据类型
    \@ 文本类型
    \0.000 精确小树三位
      

  8.   

    autoSizeCloumn方法只对英文起作用
    中文会少一半的宽度,貌似是jxl只计算简单的字长,这个BUG不知道什么时候修正写入的时候,写String类型...不是把单元格换成STRING
    double value = 111111111112.0000;
    cell.setCellValue(Double.toString(value));
      

  9.   

    换个框架吧,使用apache的POI, 同时支持ms office 2010.