java利用jxl查詢數據表數據並把數據加載到execl表格中

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("數據裝載完成......");
}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章