今天做了一个关于Java生成Excel表的功能 有两种方式:1、jxl.jar 2、poi-3.7-20101029.jar 第一个不算太了解,第二个是出自apache的标准,虽然我两个都使用了,但比较偏向第二个; 就功能***而言,第一个比较灵活,但结构略简单,无法从数据库中大规模的生成(或者是我不知道);第二个比较全面,但太过庞大 代码: Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = onnection)DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","a"); // 11:创建一个excel HSSFWorkbook book = new HSSFWorkbook(); // 1:分析数据 java.sql.DatabaseMetaData dmd = conn.getMetaData(); // 2:获取所有表名 java.sql.ResultSet rs = dmd.getTables("", "TEST", "tmenu", new String[] {"TABLE"}); List<string> tables = new ArrayList<string>(); while (rs.next()) { String tn = rs.getString("TABLE_NAME"); tables.add(tn); } int table_len = tables.size(); // 3:声明st Statement st = conn.createStatement(); int idx = 0; for (String tn : tables) { System.err.println("表:" + tn); idx++; System.err.println("-------正在导----" + idx + "/" + table_len); // 12:创建sheet HSSFSheet sheet = book.createSheet(tn); String sql = "select * from " + tn; rs = st.executeQuery(sql); // 3:rsmd ResultSetMetaData rsmd = (ResultSetMetaData)rs.getMetaData(); // 4:分析一共多少列 int cols = rsmd.getColumnCount(); // 13:创建表头 HSSFRow row = sheet.createRow(0); for (int i = 0; i < cols; i++) { String cname = rsmd.getColumnName(i + 1); HSSFCell cell = row.createCell(i); cell.setCellValue(cname); // System.err.print("\t"+cname); } // System.err.println("\n"); // 显示数据 while (rs.next()) { // 14:保存数据 row = sheet.createRow(sheet.getLastRowNum() + 1); for (int i = 0; i < cols; i++) { HSSFCell cell = row.createCell(i); cell.setCellValue(rs.getString(i + 1)); // System.err.print("\t"+rs.getString(i+1)); } // System.err.println("\n"); } // System.err.println("\n-------------------"); } book.write(new FileOutputStream("d:/aa.xls")); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } </string></string>