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("数据装载完成......");
}
}