您的位置:首页 > 编程语言 > Java开发

Java运用jxl包实现数据库表导出Excel实例

2013-12-24 15:06 681 查看
1.Java对Excel表格的操作一般依赖jxl包比较好。
  下载地址:http://ishare.iask.sina.com.cn/f/14559561.html?from=dl
2.实例简述:运用jxl包导出Mysql数据表到Excel表格中。
3.Mysql连接类:MysqlConnect.java
 
import java.sql.*;
public class MysqlConnect
{
private static final String DBDRIVER ="org.gjt.mm.mysql.Driver" ;
private static final String DBURL ="jdbc:mysql://localhost:3306/mysql" ;
private static final String DBUSER ="root" ;
private static final String DBPASSWORD= "root" ;
private static final String A="jdbc:mysql://localhost:3306/mysql?user=root&password=root&useUnicode=true&characterEncoding=utf8";
private Connection conn = null ;
 
public MysqlConnect() throwsException{
try {
Class.forName(DBDRIVER);
conn =DriverManager.getConnection(A);
} catch (Exception e) {
throw e;
}
}
public Connection getConnect(){
return this.conn;
}
public void close() throwsException{
if(this.conn != null){
try { this.conn.close();
} catch (Exception e) {
throw e;
}
}
}
}
4.Mysql数据表VO:LogsVo.java
  
public class LogsVo {
private Long logId;
private String userName;
private String logDesc;
private String time;
public Long getLogId() {
return logId;
}
public void setLogId(Long logId) {
this.logId = logId;
}
public String getUserName() {
return userName;
}
public void setUserName(StringuserName) {
this.userName = userName;
}
public String getLogDesc() {
return logDesc;
}
public void setLogDesc(String logDesc){
this.logDesc = logDesc;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
5.Excel处理类:ExcelUtil.java
 
import java.io.File;

import java.io.IOException;

import java.util.List;
import jxl.Cell;

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.NumberFormats;

import jxl.write.WritableCellFormat;

import jxl.write.WritableFont;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;
 

public class ExcelUtil {

 //标题单元格格式

  private static WritableCellFormat titleFormat =null;

  //主题内容单元格格式

  private static WritableCellFormatbodyFormat=null;

  //注释单元格格式

  private static WritableCellFormatnoteFormat=null;

   

  private static WritableCellFormatfloatFormat=null;

   

  private static WritableCellFormatintFormat=null;

   

  private static WritableCellFormatstringFormat=null;

 

  private static boolean init = false;

 

 

 

  private static void init() throwsWriteException{

   WritableFontfont1,font2,font3,font4,font5;

  //Arial字体,9号,粗体,单元格黄色,田字边框,居中对齐 

     font1 = new WritableFont(WritableFont.ARIAL, 9, WritableFont.BOLD,false); 

   titleFormat = newWritableCellFormat (font1); 

  titleFormat.setBackground(Colour.YELLOW); 

  titleFormat.setBorder(Border.ALL,BorderLineStyle.THIN); 

  titleFormat.setAlignment(Alignment.CENTRE);

  //Arial字体,9号,粗体,单元格黄色,田字边框,左右居中对齐,垂直居中对齐,自动换行 

   font2 = newWritableFont(WritableFont.ARIAL, 9, WritableFont.BOLD,false); 

   noteFormat = newWritableCellFormat (font2); 

  noteFormat.setBackground(Colour.YELLOW); 

  noteFormat.setBorder(Border.ALL,BorderLineStyle.THIN); 

  noteFormat.setAlignment(Alignment.CENTRE); 

  noteFormat.setVerticalAlignment(VerticalAlignment.CENTRE); 

  noteFormat.setWrap(true); 

  //Arial字体,9号,非粗体,单元格淡绿色,田字边框 

   font3 = newWritableFont(WritableFont.ARIAL, 9, WritableFont.NO_BOLD,false); 

   bodyFormat = newWritableCellFormat (font3); 

  bodyFormat.setBackground(Colour.LIGHT_GREEN); 

  bodyFormat.setBorder(Border.ALL,BorderLineStyle.THIN); 

  //Arial字体,9号,非粗体,单元格淡绿色,田字边框 

   font4 = newWritableFont(WritableFont.ARIAL, 9, WritableFont.NO_BOLD,false); 

   floatFormat = newWritableCellFormat(font4,NumberFormats.FLOAT); 

  floatFormat.setBackground(Colour.LIGHT_GREEN); 

  floatFormat.setBorder(Border.ALL,BorderLineStyle.THIN); 

  //Arial字体,9号,非粗体,单元格淡绿色,田字边框 

   font4 = newWritableFont(WritableFont.ARIAL, 9, WritableFont.NO_BOLD,false); 

   intFormat = newWritableCellFormat(font4,NumberFormats.INTEGER); 

  intFormat.setBackground(Colour.LIGHT_GREEN); 

  intFormat.setBorder(Border.ALL, BorderLineStyle.THIN);

  

  

  init=true;

  }

 

  public static voidcreateLogsExcelFile(List<LogsVo>

  logsList,File destFile) throws WriteException,IOException{

   if(init==false) init();

   int index,row;

   WritableSheetsheet=null;

   WritableWorkbookbook=null;

   book =Workbook.createWorkbook(destFile);

   sheet =book.createSheet("用户操作表", 0);

   sheet.setColumnView(0,15);

   sheet.setColumnView(1,15);

   sheet.setColumnView(2,25);

   sheet.setColumnView(3,30);

   //字段名

   index=0;

   sheet.addCell(newLabel(index++,0,"ID",titleFormat));

   sheet.addCell(newLabel(index++,0,"用户名",titleFormat));

   sheet.addCell(newLabel(index++,0,"日志描述",titleFormat));

   sheet.addCell(newLabel(index++,0,"日志日期",titleFormat));

   row = 1;

   for(LogsVo logs :logsList){

    if(logs ==null)continue;

    index =0;

   sheet.addCell(newLabel(index++,row,Long.toString(logs.getLogId()),bodyFormat));

   sheet.addCell(newLabel(index++,row,logs.getUserName(),bodyFormat));

   sheet.addCell(newLabel(index++,row,logs.getLogDesc(),bodyFormat));

   sheet.addCell(newLabel(index++,row,logs.getTime(),bodyFormat));

    row++;

   }

   book.write();

  if(book!=null)book.close();

  

  

  }
}
6.实现调用主方法:ExcelTestMain.java
import java.io.File;

import java.sql.*;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;
 
public class ExcelTestMain {

 private static Connection conn = null;

 private static PreparedStatement pstmt = null;

 private static List logsList = null;

 static ExcelUtil excelUtil = newExcelUtil();

 

 

    publicstatic void main(String args[]) throws Exception{

    MysqlConnect mycon = new MysqlConnect();

    conn = mycon.getConnect();

    String sql = "select * from logs;";

    pstmt = conn.prepareStatement(sql);

    ResultSet rs = pstmt.executeQuery() ;

    

    logsList = new ArrayList();

    while(rs.next()){

     LogsVo logsVo = newLogsVo();

     logsVo.setLogId(rs.getLong(1));

     logsVo.setUserName(rs.getString(2));

     logsVo.setLogDesc(rs.getString(3));

     logsVo.setTime(rs.getTimestamp(4).toString());

     logsList.add(logsVo);
    }

    SimpleDateFormat format = newSimpleDateFormat("yyyy.MM.dd");

  String dateStr =format.format(new Date());

  File file = newFile("D:\\jkbb\\"+dateStr +"用户操作信息.xls");

  excelUtil.createLogsExcelFile(logsList,file);

    

    }

}
7.导出Ecel:




   这里出现导出的汉字为乱码的错误,试过改变Mysql数据库编码格式,和JAVA代码中装换编码格式都没解决。先留着...研究下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: