1. 程式人生 > >關於使用java程式碼將資料庫裡的表匯出到Excel中

關於使用java程式碼將資料庫裡的表匯出到Excel中

package CurriculumDesign;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//將資料庫的資料匯出到Excel
public class Excel {
// 匯出的Excel表的sheet名字設定為:學生的資訊
public static String tables = "學生的資訊";
// sql語句 選擇匯出資料庫的哪個表
public static String sqls = "select * from students";
// 匯出表的csv檔案儲存的地址
public static String outputFile = "E:/學生資訊表.xls";

public static Connection con = null;

        //連線資料庫的程式碼根據自己可以更改  還有表的名字都可以更改

public void excel() {
try {
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/xueji?characterEncoding=UTF-8&useSSL=false",
"root", "123456");
} catch (SQLException sqlE) {
sqlE.printStackTrace();
}
// PreparedStatement 預編譯
PreparedStatement ps_struts = null;
ResultSet rs_struts = null;
try {
//HSSFWorkBook:操作2003版本以前的(包括2003版本),副檔名.xls
//建立Excel檔案(Workbook)
HSSFWorkbook workbook = new HSSFWorkbook();
String[] tempo;
int rowNum = 1;
try {
//執行資料庫的sq語句 
ps_struts = con.prepareStatement(sqls);
rs_struts = ps_struts.executeQuery();
//獲取Connection物件所連線的資料庫的元資料。元資料包括關於資料庫的表
ResultSetMetaData rsm = rs_struts.getMetaData();
//建立一個名字為(tables)的表原名字預設為sheet
HSSFSheet sheet = workbook.createSheet(tables);
//getRowCount 獲取資料庫錶行的數量  getColumnCount獲取列的數量
int columnCount = rsm.getColumnCount();
//把表頭填好
try {
//在Excel裡建立行,從0開始
HSSFRow row1 = sheet.createRow(0);
for (int i = 1;i<=columnCount;i++) {
//讓Excel自動適應列寬
sheet.autoSizeColumn(i);
//獲取表列頭的名字
String columnName = rsm.getColumnName(i);
//建立行的單元格,也是從0開始
HSSFCell cell1 = row1.createCell(i - 1);
//設定單元格內容
cell1.setCellValue(columnName);
}
} catch (Exception e) {
e.printStackTrace();
}

//迴圈資料庫表中的每一行,來得到每一行的資料
while (rs_struts.next()) {
//每迴圈一次建立一行從 1 開始
HSSFRow row = sheet.createRow(rowNum);
tempo = new String[columnCount];
for (int i = 0; i < columnCount; i++) {
//建立行的單元格,從0開始
HSSFCell cell = row.createCell(i);
//讓Excel自動適應列寬
sheet.autoSizeColumn(i);
//getMetaData().getColumnName(i);欄位名
String columnName = rs_struts.getMetaData().getColumnName(i + 1);
tempo[i] = rs_struts.getString(columnName);
//設定單元格內容
cell.setCellValue(tempo[i]);
}
//每次迴圈結束後要使陣列為空,方便儲存資料庫表中下一行的數值
tempo = null;
//rowNum++ 下一次迴圈建立的行向下
rowNum++;
}
} catch (SQLException e1) {
e1.printStackTrace();
}
FileOutputStream fOut = new FileOutputStream(outputFile);
workbook.write(fOut);//儲存Excel檔案
//fOut.flush();
fOut.close();//關閉檔案流
} catch (Exception e) {
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "匯出完成");
}
public static void main(String[] args) {
Excel l = new Excel();
l.excel();
}
}