1. 程式人生 > >Java實現指定資料表匯出生成Excel

Java實現指定資料表匯出生成Excel

1. 前言:

在開發過程中往往少不了自動生成excel,比如學校教務系統,醫療系統,公司財務或者是公司員工的工資預覽表都會使用。

2. 準備階段:

1、Java開發環境

2、所需要的jar包:
(1)mysql-connector-java-5.1.12-bin.jar
(2)poi-3.17-beta1.jar

這裡提供了相關的jar包連結:

3. 例項

3.1 通過java生成Excel檔案,並且能新增內容進去

package cn.ink.excel;

import java.io.FileOutputStream;

import org.apache
.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Workbook; public class FromDbToExcelTest01 { public static void main(String[] args) throws Exception { // 建立一個Excel Workbook book = new HSSFWorkbook();
// 在對應的Excel中建立一個分表 Sheet sheet1 =(Sheet) book.createSheet("分表1"); // 設定相應的行(初始從0開始) Row row =sheet1.createRow(0); // 在所在的行設定所在的單元格(相當於列,初始從0開始,對應的就是A列) Cell cell = row.createCell(0); // 寫入相關資料到設定的行列中去。 cell.setCellValue
("相關資料"); // 儲存到計算機相應路徑 book.write( new FileOutputStream("D://a.xls")); } }

這裡寫圖片描述

3.2 讀出對應資料庫表中的內容

package cn.ink.excel;

import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

public class Test03 {
    //TODO 需要將url\使用者名稱\密碼修改為自己的
    public final static String url = "jdbc:mysql://127.0.0.1:3306/blog";
    public final static String user = "root";
    public final static String password = "123456";

    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            // 連線資料庫
            Connection con = (Connection) DriverManager.getConnection(url,
                    user, password);
            DatabaseMetaData dbmt = con.getMetaData();
            // 拿到所有的blog資料庫中所有資訊
            // TODO 需要將blog修改為自己的資料庫
            ResultSet rs = dbmt.getTables("blog", "blog", null, new String[] {
                    "TABLE", "VIEW" });
            List<String> tablenames = new ArrayList<String>();
            while (rs.next()) {
                String tablename = rs.getString("TABLE_NAME");
                tablenames.add(tablename);
            }
            for (String tablename : tablenames) {
                System.out.println(tablename + "表:");
                String sql = "select * from " + tablename;
                Statement st = (Statement) con.createStatement();
                ResultSet dataRs = st.executeQuery(sql);
                ResultSetMetaData rsmt = dataRs.getMetaData();
                // 拿到列數
                int colnums = rsmt.getColumnCount();
                for (int i = 1; i <= colnums; i++) {
                    // 拿到表頭資訊
                    String colName = rsmt.getColumnName(i);
                    System.out.print(colName + "\t");
                }
                System.out.println();

                while (dataRs.next()) {
                    for (int i = 1; i <= colnums; i++) {
                        // 拿到表資訊
                        System.out.print(dataRs.getString(i) + "\t");
                    }
                    System.out.println();
                }

            }
            con.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

這裡寫圖片描述

3.3 將指定資料庫中指定資料表匯出到Excel中

package cn.ink.excel;

import java.io.FileOutputStream;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

public class FromOneSheetToExcel {
    //TODO 需要將url\使用者名稱\密碼修改為自己的
    public final static String url = "jdbc:mysql://127.0.0.1:3306"; // 資料庫URL
    public final static String user = "root"; // 資料庫使用者名稱
    public final static String password = "123456"; // 資料庫密碼

    // 把資料庫單張表資訊匯入到Excel表中
    public static void main(String[] args) throws Exception {
        // 架子啊資料庫驅動
        Class.forName("com.mysql.jdbc.Driver");
        // 連線資料庫
        Connection con = (Connection) DriverManager.getConnection(url, user,
                password);
        // 建立Excel表。
        Workbook book = new HSSFWorkbook();
        // DatabaseMetaData dbmt = con.getMetaData();
        // 獲得blog資料庫
        //TODO 需要將blog修改為你指定的資料庫
        // ResultSet rs = dbmt.getTables("blog", "blog", null, new String[] {
        // "TABLE", "VIEW" });
        // 設定要轉化為Excel的表
        //TODO 需要將Table_Name修改為當前資料庫中你想匯出的資料表
        String Table_Name = "team";
        // while (rs.next()) {
        // if ("team".equals(rs.getString("TABLE_NAME"))) {
        // Table_Name = "team";
        // break;
        // }
        // }
        // 在當前Excel建立一個子表
        Sheet sheet = book.createSheet(Table_Name);

        Statement st = (Statement) con.createStatement();
        // 建立sql語句,對team進行查詢所有資料
        String sql = "select * from blog." + Table_Name;
        ResultSet rs = st.executeQuery(sql);
        // 設定表頭資訊(寫入Excel左上角是從(0,0)開始的)
        Row row1 = sheet.createRow(0);
        ResultSetMetaData rsmd = rs.getMetaData();
        int colnum = rsmd.getColumnCount();
        for (int i = 1; i <= colnum; i++) {
            String name = rsmd.getColumnName(i);
            // 單元格
            Cell cell = row1.createCell(i - 1);
            // 寫入資料
            cell.setCellValue(name);
        }
        // 設定表格資訊
        int idx = 1;
        while (rs.next()) {
            // 行
            Row row = sheet.createRow(idx++);
            for (int i = 1; i <= colnum; i++) {
                String str = rs.getString(i);
                // 單元格
                Cell cell = row.createCell(i - 1);
                // 寫入資料
                cell.setCellValue(str);
            }
        }
        // 儲存
        book.write(new FileOutputStream("D://" + Table_Name + ".xls"));

    }
}

這裡寫圖片描述