import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
/***
*從數據庫查詢數據
*然後進行裝載寫入execl
*@author zyh
**/
public class DataExcel {
static Connection conn = null;
public static void main(String[] args) throws Exception {
try {
dataBaseConnection();
createExcel();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 數據庫連接
* @throws Exception
*/
public static void dataBaseConnection() throws Exception{
String driver="oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@20.1.2.105:1521:LOWUSER";
String user="sfck";
String password="sfck";
System.out.println("連接數據庫開始......");
Class.forName(driver);
conn = DriverManager.getConnection(url,user,password);
System.out.println("連接數據庫成功......");
}
/**
* 從數據庫中查出數據,寫入Excel文件中
* @throws Exception
*/
public static void createExcel() throws Exception{
//文件路徑
String sFilePath = "D:/data/temp/";
//文件名
String sFileName = "blackgreay.xls";
File fFlie = new File(sFilePath+sFileName);
WritableWorkbook book= Workbook.createWorkbook(fFlie);
//工作表名稱
String sSheetName = "黑灰名單數據推送";
WritableSheet sheet = book.createSheet(sSheetName,0);
//設置工作表網格線
sheet.getSettings().setShowGridLines(true);
//定義樣式
WritableFont font = new WritableFont(WritableFont.ARIAL, 10);
WritableCellFormat format = new WritableCellFormat(font);
//設置水平居中對齊
format.setAlignment(Alignment.CENTRE);
//設置垂直居中對齊
format.setVerticalAlignment(VerticalAlignment.CENTRE);
//設置背景顏色
format.setBackground(Colour.GRAY_25);
//設置單元格邊框
format.setBorder(Border.ALL, BorderLineStyle.THIN);
//定義表頭
String[] sTitle = {"批次號","請求單號","機構號","客戶證件類型","客戶證件號碼","客戶賬號","客戶名稱","查控標識"};
//設置各列列寬
for(int i = 0; i < sTitle.length; i++){
if(i==7){
sheet.setColumnView(i, 40);
}else{
sheet.setColumnView(i, 15);
}
}
int iRow = 0;//行號
for(int i = 0; i < sTitle.length; i++){
sheet.addCell(new Label(i,iRow,sTitle[i],format));
}
iRow += 1;
String sSql = " select pch,qqdh,jgh,khzjlx,khzjh,khzh,ckbs from electronicinfo ";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sSql);
while(rs.next()) {
sheet.addCell(new Label(0,iRow,iRow+"",format));
int iCol = 1;//列號
//初始化列值
String sColumnValue = "";
//特殊關注點:列號不能大於查詢結果集列數,否則報無效索引異常
while(iCol <= rs.getMetaData().getColumnCount()){
sColumnValue = rs.getString(iCol);
if(sColumnValue!=""%%sColumnValue!=null){
sheet.addCell(new Label(iCol-1,iRow,sColumnValue,format));
}else{
sheet.addCell(new Label(iCol-1,iRow,sColumnValue,format));
}
iCol ++;
}
iRow ++;
}
rs.close();
st.close();
//關閉連接
conn.close();
//寫入數據
book.write();
//關閉文件
book.close();
System.out.println("數據裝載完成......");
}
}