今天用eos做完公司所有报表。eos的报表功能确实很强大。三下五去二就很容易的做出一个很完美的报表(包括xls格式,
html格式,applat格式)。但是eos报表功能屏蔽了太多的技术细节。对于一个热爱技术的人来说,看不到底层的技术细节真有点遗憾。
下午闲来无事就去网上逛了一圈。发现开源的poi操纵excle非常方便,于是去官方网站上下了这个包。仔细的研究了一下。也顺便做了
个列子。
这个例子展示了从数据里面取出数据然后写入excle文件。
连接数据库类:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private String classString="oracle.jdbc.driver.OracleDriver";
private String username="hehe";
private String password="hehe";
private String url="java:oracle:thin:@192.168.1.17:1521:test";
private Connection con=null;
public Connection getConnection(){
try {
Class.forName(classString);
con=DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
}
操纵excel类:
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class CreateXL {
private static String xlsFile="f:\\test.xls";
//取得结果集
public static ResultSet getResult(String sql){
DBConnection db=new DBConnection();
Connection con=db.getConnection();
ResultSet rs=null;
Statement st=null;
try {
st=con.createStatement();
rs=st.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
//向excle写入数据
public static void toxls(ResultSet rs)throws Exception{
HSSFWorkbook workbook=new HSSFWorkbook();
HSSFSheet sheet=workbook.createSheet("结果数据");
HSSFRow row=sheet.createRow(0);
HSSFCell cell;
ResultSetMetaData smdata=rs.getMetaData();
int nColum=smdata.getColumnCount();
for(int i=1;i<nColum;i++){
cell=row.createCell(i-1);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(new HSSFRichTextString(smdata.getColumnLabel(i)));//写入列标号
}
int intRow=1;
while(rs.next()){
row=sheet.createRow(intRow);
for(int j=1;j<nColum;j++){
cell=row.createCell(j-1);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
String result="";
Object obj=rs.getObject(j);
if(obj!=null){
result=obj.toString();
}
cell.setCellValue(new HSSFRichTextString(result));//写入数据
}
intRow++;
}
FileOutputStream fout=new FileOutputStream(xlsFile);
workbook.write(fout);
fout.flush();
fout.close();
}
public static void main(String args[]) throws Exception{
toxls(getResult("select * from user_"));
}
}