各位大哥,
     请问jexcel写的excel文件能用2003打开吗??我做的excel表,都有错误,不管我往里面写入什么数据,用2003打开看都没有任何东西!
     若是不支持,市面上有没有更好的,更易用的操作excel的API
    谢谢!

解决方案 »

  1.   

    用Apache的开源的PIO吧,非常好用,最新的版本能操作2007了,试试,www.apache.org里面下载吧
      

  2.   

    jxl 和 poi 两个都可以支持2003
    至于2007还没有试过!
      

  3.   

    直接用xml版本的excel就可以了。很简单很方便。
    你把Excel另存为xml文件后打开来看看。
      

  4.   


    可以啊,做过,我给个例子,可以看下public class StatiPersonTable {    /**
         * 开始显示的行号.
         */
        private static int START_ROWS = 0;
        /**
         * 开始显示的列号.
         */
        private static int START_COLS = 0;    /**
         * 从数据库读数据,写入Excel.
         *
         * @param os
         *            数据流,如果是写本地文件的话,可以是FileOutputStream;
         *            如果是写Web下载的话,可以是ServletOupputStream
         * @param vos
         *            List
         * @throws Exception
         *             方法内的父类异常有SQLException和IOException
         */
        public void export(OutputStream os, List vos) throws Exception {        // 初始化报表
            WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件
            WritableSheet wsheet = wbook.createSheet("用户统计", 0); // sheet名称
            Label wlabel = null; // Excel表格的Cell
            jxl.write.Number number = null;
            WritableFont font1 = new WritableFont(WritableFont.ARIAL, 8,
                    WritableFont.BOLD, false,
                    jxl.format.UnderlineStyle.NO_UNDERLINE,
                    jxl.format.Colour.BLACK); // 或设置字体格式为excel支持的格式
            WritableCellFormat format1 = new WritableCellFormat(font1);
            format1.setAlignment(jxl.format.Alignment.CENTRE);
            format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
            format1.setWrap(true);        // 初始化
            int rows = START_ROWS;
            int cols = START_COLS;        // 标题
            String[] titles = {"部门编号", "部门名称", "部门描述", "用户数(人)"};
            for (int i = 0; i < titles.length; i++) {
                wlabel = new jxl.write.Label(cols, rows, titles[i], format1);
                wsheet.addCell(wlabel);
                ++cols;
            }        // 报表内容
            int approveVosSize = 0;
            if (vos != null && !"".equals(vos)) {
                approveVosSize = vos.size();
            }
            int totalSize = 0;
            for (int i = 0; i < approveVosSize; i++) {
                ++rows;
                cols = START_COLS;
                StatiPersonVO approveVo = (StatiPersonVO) vos.get(i);
                number = new jxl.write.Number(cols, rows, i + 1);
                wsheet.addCell(number);
                ++cols;
                wlabel = new jxl.write.Label(cols, rows, approveVo.getName());
                wsheet.addCell(wlabel);
                ++cols;
                wlabel = new jxl.write.Label(cols,
                        rows,
                        approveVo.getDescription());
                wsheet.addCell(wlabel);
                ++cols;            number = new jxl.write.Number(cols, rows, approveVo.getUsernum());
                wsheet.addCell(number);
                ++cols;            totalSize += approveVo.getUsernum();        }
            if (approveVosSize != 0) { // 显示已分配用户总数
                ++rows;
                cols = START_COLS + 2;
                wlabel = new jxl.write.Label(cols, rows, "已分配用户总数:");
                wsheet.addCell(wlabel);
                ++cols;
                number = new jxl.write.Number(cols, rows, totalSize);
                wsheet.addCell(number);
            }        wbook.write(); // 写入文件
            wbook.close();
            os.flush();
            os.close();
        }
    }
      

  5.   

    通过jExcel是没有问题的,我也做过这方面的东西