隨筆-167  評論-65  文章-0  trackbacks-0

          效果:

          image

          使用時先把poi包導入工程的path,注意只需要導入poi包即可,下載后有三個jar包

          核心代碼:

          連接數據庫:DBConnection.java

          package org.xg.db;
          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.PreparedStatement;
          import java.sql.ResultSet;
          import java.sql.SQLException;
          public class DBConnection {
          private final String DBUrl = "jdbc:mysql://localhost:3306/notebook" ;
          private final String DBDriver = "com.mysql.jdbc.Driver" ;
          private final String username = "root" ;
          private final String password = "riskfitfeng" ;
          private Connection con ;
          public DBConnection()
          {
          try {
          Class.forName(DBDriver) ;
          con = DriverManager.getConnection(DBUrl,username,password) ;
          } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          }
          }
          public Connection getDB()
          {
          return con ;
          }
          public void closeDb(ResultSet rs,PreparedStatement ps)
          {
          if(rs!=null)
          {
          try {
          rs.close() ;
          } catch (SQLException e) {
          // TODO Auto-generated catch block
          
          e.printStackTrace(); } }
          if(ps!=null) { try { ps.close() ; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

          導入excel類:MySql2Excel.java

          package org.xg.db;
          import java.io.FileOutputStream;
          import java.io.OutputStream;
          import java.sql.Connection;
          import java.sql.ResultSet;
          import org.apache.poi.hssf.usermodel.HSSFCell;
          import org.apache.poi.hssf.usermodel.HSSFRichTextString;
          import org.apache.poi.hssf.usermodel.HSSFRow;
          import org.apache.poi.hssf.usermodel.HSSFSheet;
          import org.apache.poi.hssf.usermodel.HSSFWorkbook;
          public class MySql2Excel {
          public MySql2Excel() throws Exception
          {
          Connection con = null ;
          DBConnection db = new DBConnection() ;
          con = db.getDB() ;
          String sql = "select * from students" ;
          ResultSet rs = con.createStatement().executeQuery(sql) ;
          // 獲取總列數
          int CountColumnNum = rs.getMetaData().getColumnCount() ;
          int i = 1 ;
          // 創建Excel文檔
          HSSFWorkbook wb = new HSSFWorkbook() ;
          // sheet 對應一個工作頁
          HSSFSheet sheet = wb.createSheet("student表中的數據") ;
          HSSFRow firstrow = sheet.createRow(0); //下標為0的行開始
          HSSFCell[] firstcell = new HSSFCell[CountColumnNum];
          String[] names = new String[CountColumnNum];
          names[0] = "ID";
          names[1] = "學號";
          names[2] = "姓名";
          names[3] = "性別";
          names[4] = "班級";
          for(int j= 0 ;j<CountColumnNum; j++){
          firstcell[j] = firstrow.createCell((short)j);
          firstcell[j].setCellValue(new HSSFRichTextString(names[j]));
          }
          while(rs.next())
          {
          // 創建電子表格的一行
          HSSFRow row = sheet.createRow(i) ; // 下標為1的行開始
          for(int j=0;j<CountColumnNum;j++)
          {
          // 在一行內循環
          HSSFCell cell = row.createCell((short) j) ;
          // 設置表格的編碼集,使支持中文
          //
          // 先判斷數據庫中的數據類型
          // 將結果集里的值放入電子表格中
          cell.setCellValue(new HSSFRichTextString(rs.getString(j+1))) ;
          }
          i++ ;
          }
          // 創建文件輸出流,準備輸出電子表格
          OutputStream out = new FileOutputStream("E:\\person.xls") ;
          wb.write(out) ;
          out.close() ;
          System.out.println("數據庫導出成功") ;
          rs.close() ;
          con.close() ;
          }
          public static void main(String[] args)
          {
          try {
          @SuppressWarnings("unused")
          MySql2Excel excel = new MySql2Excel() ;
          } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          }
          }
          }
          

          例如你可以在前端jsp中這樣調用:

          <a href="ReportServlet" onclick="return confirm('確認數據導出到E:/下?');">導出數據到Excel</a>

          后臺servlet寫上上面的代碼,注意最后需要response.sendRedirect("") 返回前端

           

          源碼下載:

          http://www.namipan.com/d/98cf9d03ab8f39ce3c107bb5b44b642dcb3ba581382a1400

          poi包下載:

          http://www.namipan.com/d/e0493749dd5e3a1f2e28a0a32493e5e026fae4aa1ac69c00



          write by feng
          posted on 2009-05-26 18:12 fl1429 閱讀(3109) 評論(1)  編輯  收藏 所屬分類: J2se

          評論:
          # re: Java 利用poi把數據庫中數據導入Excel 2016-08-08 16:01 | 火車北京北京北京創建吧
          利用框架Mybatis  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          已訪問數:
          free counters
          主站蜘蛛池模板: 高邮市| 玉田县| 祁阳县| 左权县| 怀化市| 延庆县| 新余市| 浪卡子县| 丹凤县| 长兴县| 云安县| 化德县| 巢湖市| 普安县| 长子县| 邢台市| 扎鲁特旗| 营口市| 阿拉善左旗| 武隆县| 随州市| 奉新县| 扶余县| 岳普湖县| 巴马| 龙门县| 石城县| 平山县| 永仁县| 铜鼓县| 专栏| 临颍县| 大连市| 汕尾市| 房山区| 资溪县| 秀山| 永和县| 漯河市| 镇远县| 克什克腾旗|