用POI和JXL 楼主可以去google上查下相关的内容,比较多代码也不少。
如果要实现比较复杂的功能的话,用POI的吧。

解决方案 »

  1.   

    // 创建新的Excel 工作簿   HSSFWorkbook workbook = new HSSFWorkbook();   // 在Excel工作簿中建一工作表,其名为缺省值
          // 如要新建一名为"效益指标"的工作表,其语句为:
          // HSSFSheet sheet = workbook.createSheet("效益指标");   HSSFSheet sheet = workbook.createSheet();   // 在索引0的位置创建行(最顶端的行)   HSSFRow row = sheet.createRow((short)0);   //在索引0的位置创建单元格(左上端)
      HSSFCell cell = row.createCell((short) 0);
      // 定义单元格为字符串类型
      cell.setCellType(HSSFCell.CELL_TYPE_STRING);
      // 在单元格中输入一些内容
      cell.setCellValue("增加值");
      // 新建一输出文件流
      FileOutputStream fOut = new FileOutputStream(outputFile);
      // 把相应的Excel 工作簿存盘
      workbook.write(fOut);
      fOut.flush();
      // 操作结束,关闭文件
      fOut.close();
    代码:
    import java.io.*;
    import java.sql.*;
    import org.apache.poi.hssf.usermodel.*;public class AppMain {
        public AppMain() {
        }
        public static void main(String[] args) {
            try {
                HSSFWorkbook wb = new HSSFWorkbook();
                HSSFSheet sheet =null;
               /**连接ORACLE的数据库,关键在于两个系统级的VIEW:
                all_tab_columns 记录着ORACLE所有的字段定义信息.
                DBA_COL_COMMENTS 记录着字段的注释信息,*/
                Class.forName("oracle.jdbc.driver.OracleDriver");
                Connection con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORACLE","用户名","密码");
                Statement stmt = con.createStatement();
                StringBuffer strbuf = new StringBuffer();
                strbuf.append("SELECT A.*,B.comments");
                strbuf.append(" FROM all_tab_columns A,DBA_COL_COMMENTS B");
                strbuf.append(" WHERE A.owner=B.owner");
                strbuf.append(" AND A.table_name=B.table_name");
                strbuf.append(" AND A.COLUMN_NAME=B.COLUMN_NAME");//owner是建立表的用户名
                strbuf.append(" AND A.owner=myuser");
                strbuf.append(" ORDER BY A.TABLE_NAME");
                ResultSet rs = stmt.executeQuery(strbuf.toString());            String tb = "";
                int k = 0;
                while (rs.next()) {
                      //对每个表生成一个新的sheet,并以表名命名
                    if (!tb.equals(rs.getString("TABLE_NAME"))) {
                        sheet = wb.createSheet(rs.getString("TABLE_NAME"));//设置表头的说明
                        HSSFRow row = sheet.createRow(0);
                        setCellGBKValue(row.createCell((short) 0),"字段名");
                        setCellGBKValue(row.createCell((short) 1),"字段类型");
                        setCellGBKValue(row.createCell((short) 2),"字段长度");
                        setCellGBKValue(row.createCell((short) 3),"数字长度");
                        setCellGBKValue(row.createCell((short) 4),"小数位数");
                        setCellGBKValue(row.createCell((short) 5),"能否为NULL");
                        setCellGBKValue(row.createCell((short) 6),"字段说明");
                        k = 1;
                     } else {
                        k++;
                    }
                    tb = rs.getString("TABLE_NAME");
                    HSSFRow row = sheet.createRow(k);
                    row.createCell((short) 0).setCellValue(rs.getString("COLUMN_NAME"));
                    row.createCell((short) 1).setCellValue(rs.getString("DATA_TYPE"));
                    row.createCell((short) 2).setCellValue(rs.getString("DATA_LENGTH"));
                    row.createCell((short) 3).setCellValue(rs.getString("DATA_PRECISION"));
                    row.createCell((short) 4).setCellValue(rs.getString("DATA_SCALE"));
                    row.createCell((short) 5).setCellValue(rs.getString("NULLABLE"));
                    setCellGBKValue(row.createCell((short) 6),rs.getString("COMMENTS"));            }             //把生成的EXCEL文件输出保存
                FileOutputStream fileOut = new FileOutputStream("F:\\数据字典.xls");
                wb.write(fileOut);
                fileOut.close();            rs.close();
                stmt.close();
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }/**这个函数是为了设置一个CELL为中文字符串*/ 
       private static void setCellGBKValue(HSSFCell cell, String value) {
            cell.setCellType(HSSFCell.CELL_TYPE_STRING);//设置CELL的编码信息
            cell.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell.setCellValue(value);
        }
    }
      

  2.   

    redbean56(红豆) ( ) 信誉:98 (自己照量办吧,讲不讲究就看这一把了)