我的jsp页面是ShowInfo.jsp,这个页面是从数据库里面动态查出来的,是一张表格,现在我想将jsp页面上的数据导入到excel文件中,数据是导出来了,但是打开excel文件的时候中文字符是些乱码,不知道时什么原因啊??我的jsp是写的过滤器,使用的全是UTF-8编码,在jsp页面上显示的中文字符也没什么问题,只是到了excel文件中,汉字会出现乱码。是不是和excel的字符编码方式有关??请问在哪儿修改excel的字符编码方式???

解决方案 »

  1.   

    这是我的生成xls文件的代码 你看下/**
     * 生成xls文件
     * @param title 标题数组
     * @param list  内容数组 格式111|222|333|444|555
     * @return
     */
    public static String create(String[] title,String[] list)   
    {   
    SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
    String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000);
    String basePath=XmlExplanatory.getReportSavePath();
    String PATH=basePath+"/"+newFileName+".xls";
    try {
    // 打开文件
    WritableWorkbook book = Workbook.createWorkbook(new File(PATH));
    // 生成名为“第一页”的工作表,参数0表示这是第一页
    WritableSheet sheet = book.createSheet("Sheet1", 0);
    // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
    // 设置Title
    Label label = null;
    for (int i = 0; i < title.length; i++) {
    label = new Label(i, 0, title[i]);
    sheet.addCell(label);
    sheet.setColumnView(i, 20);
    }
    for (int i = 0; i < list.length; i++) {
    String[] ss = list[i].split("\\|");
    for (int j = 0; j < ss.length; j++) {
    label = new Label(j, i + 1, ss[j]);
    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);
    }
    return newFileName;
    }   
    }