我用jxl导出excel,一开始是可以导出的,在模板上设置了分列后,再导出的的excel文件就打不开了,提示文件格式无效,在网上查了查,workbook.write()也写了啊。
另外,拷贝一个好用的模板到自己机器上,导出后,打开还是提示文件格式无效。
郁闷了,各位大牛帮帮忙。
谢谢了

解决方案 »

  1.   

    给个方法给你看看。public void export2ExcelWithoutDialog(String[] coloumNames,
    ResultSet[] rSets, String[] sheetNames, String path,
    String excelName) {
    try {
    WritableWorkbook book = Workbook.createWorkbook((new File(path
    + "\\" + excelName)));
    for (int h = 0; h < sheetNames.length; h++) {
    // 设置单元格样式
    WritableFont wFont = new WritableFont(WritableFont.TAHOMA);
    // 设置字体、大小
    wFont.setColour(Colour.BLACK);
    wFont.setBoldStyle(WritableFont.BOLD);
    wFont.setPointSize(10);
    WritableCellFormat wcf = new WritableCellFormat(wFont);
    wcf.setBackground(Colour.YELLOW);
    WritableSheet sheet = book.createSheet(sheetNames[h], h);
    for (int i = 0; i < coloumNames.length; i++) {
    Label label = new Label(i, 0, coloumNames[i], wcf);
    sheet.addCell(label);
    }
    int i = 0;
    wFont = new WritableFont(WritableFont.TAHOMA);
    wFont.setColour(Colour.BLACK);
    wFont.setPointSize(8);
    wcf = new WritableCellFormat(wFont);
    while (rSets[h].next()) {
    i = i + 1;
    sheet.setColumnView(i, 25);
    Label label1A = new Label(0, i, rSets[h].getRow() + "");
    sheet.addCell(label1A);
    for (int j = 0; j < coloumNames.length; j++) {
    if (j == 0) {
    Label label = new Label(j, i, rSets[h].getRow()
    + "", wcf);
    sheet.addCell(label);
    } else {
    Label label = new Label(j, i,
    rSets[h].getString(j), wcf);
    sheet.addCell(label);
    }
    }
    }
    }
    book.write();
    book.close();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
      

  2.   

    参数分别的意思是:
    列明数组
    导出的SQL结果集数组
    sheet的名字数组
    导出的Ecxel路径
    excel名称
    -===========
    注意结果集数组的大小要和sheet名称数组大小相等。
      

  3.   


    File temFile = new File(templeFile); // 模版文件
    File newexcelFile = new File(newFile); // 新文件
    Workbook rwb = null; 
    WritableWorkbook workbook = null;
    try {
    try {
    // 取得模板文件
    rwb = Workbook.getWorkbook(temFile);
    } catch (Exception ex) {
    // ex.printStackTrace();
    result = 0;
    }
    try {
    // 通过模板创建一个文件
    workbook = Workbook.createWorkbook(newexcelFile, rwb);
    } catch (IOException e) {
    // e.printStackTrace();
    result = 0;
    }
    // 读取工作表的内容
    WritableSheet ws = workbook.getSheet(0);
    // 设置字体格式
    WritableFont font = new WritableFont(WritableFont.createFont("宋体"), 10, WritableFont.NO_BOLD);   
    // 把字体,和数字格式加到表格中
    WritableCellFormat cellFormat1 = new WritableCellFormat(font);
    cellFormat1.setBorder(Border.ALL, BorderLineStyle.THIN); 

    try {
    // 居中对齐
    cellFormat1.setBorder(jxl.format.Border.BOTTOM, BorderLineStyle.MEDIUM);
    cellFormat1.setAlignment(jxl.format.Alignment.LEFT);
    } catch (WriteException we) {
    // we.printStackTrace();
    result = 0;
    }
    if(list!=null&&list.size()>0){
                 // 下面开始添加单元格 代表行数据(从0开始(0,0))
         for (int i = 0; i < list.size(); i++) {
         TrainUser bean = (TrainUser) list.get(i);
        
        
         // 这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
         Label labelA = new Label(0, i + 1, bean.getId().toString());
         Label labelB = new Label(1, i + 1, bean.getFullName());
         Label labelC = new Label(2, i + 1, bean.getUserName());
         Label labelD = new Label(3, i + 1, bean.getPassword());
         Label labelE = new Label(4, i + 1, bean.getEntryDate().toLocaleString());
         Label labelF = new Label(5, i + 1, bean.getLevelNo());
         Label labelG = new Label(6, i + 1, bean.getCardNo());
         Label labelH = new Label(7, i + 1, bean.getBirthday().toLocaleString());
         Label labelI = new Label(8, i + 1, bean.getRegionNo());
         Label labelJ = new Label(9, i + 1, bean.getAgentNo());
         Label labelK = new Label(10, i + 1, bean.getContact());
         Label labelL = new Label(11, i + 1, bean.getNation());
         Label labelM = new Label(12, i + 1, bean.getEducation());
         Label labelN = new Label(13, i + 1, bean.getSex());
         Label labelO = new Label(14, i + 1, bean.getIsMisstion().toString());
         Label labelP = new Label(15, i + 1, bean.getContent());
         try {
         // 将生成的单元格添加到工作表中
         labelA.setCellFormat(cellFormat1);
         labelB.setCellFormat(cellFormat1);
         labelC.setCellFormat(cellFormat1);
         labelD.setCellFormat(cellFormat1);
         labelE.setCellFormat(cellFormat1);
         labelF.setCellFormat(cellFormat1);
         labelG.setCellFormat(cellFormat1);
         labelH.setCellFormat(cellFormat1);
         labelI.setCellFormat(cellFormat1);
         labelJ.setCellFormat(cellFormat1);
         labelK.setCellFormat(cellFormat1);
         labelL.setCellFormat(cellFormat1);
         labelM.setCellFormat(cellFormat1);
         labelN.setCellFormat(cellFormat1);
         labelO.setCellFormat(cellFormat1);
         labelP.setCellFormat(cellFormat1);
        
         ws.addCell(labelA);
         ws.addCell(labelB);
         ws.addCell(labelC);
         ws.addCell(labelD);
         ws.addCell(labelE);
         ws.addCell(labelF);
         ws.addCell(labelG);
         ws.addCell(labelH);
         ws.addCell(labelI);
         ws.addCell(labelJ);
         ws.addCell(labelK);
         ws.addCell(labelL);
         ws.addCell(labelM);
         ws.addCell(labelN);
         ws.addCell(labelO);
         ws.addCell(labelP);
        
         } catch (RowsExceededException e) {
    //     e.printStackTrace();
         result = 0;
         } catch (WriteException e) {
    //     e.printStackTrace();
         result = 0;
         }
         }
    }

    try {
    workbook.write();
    workbook.close();
    } catch (IOException e) {
    // e.printStackTrace();
    result = 0;
    }
    result = 1;
    }catch(Exception e){
    result = 0;
    }finally {
    if (workbook != null) {
    try {
    workbook.close();
    } catch (WriteException e) {
    // e.printStackTrace();
    result = 0;
    } catch (IOException e) {
    // e.printStackTrace();
    result = 0;
    }
    }
    if (rwb != null) {
    rwb.close();
    }
    }