导出excel有很多种方法,其中有jxl,poi,jsp都可以,其中我使用的是poi!
例如:
/**
* 页面配置
* @param sheet
* @param isfalg
* @param pagesize
*/
private void PageConfig(HSSFSheet sheet,boolean isfalg,int pagesize){
HSSFPrintSetup hssfPrintSetup=sheet.getPrintSetup();
hssfPrintSetup.setLandscape(isfalg); // 打印方向,true:横向,false:纵向(默认)
hssfPrintSetup.setPaperSize((short)pagesize); //打印大小
}
/**
* 设置字体
* @param size
* @param f
* @param weight
* @param workbook
* @return
*/
public HSSFFont getFont(int size,String f,boolean weight,HSSFWorkbook workbook){
// 创建字体并改变它
HSSFFont font = workbook.createFont();
//设置长度
font.setFontHeightInPoints((short)size);
font.setFontName(f);
if(weight){
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
}
return font;
}
/**
*获取样式
* @param workbook
* @param align
* @param font
* @return
*/
private HSSFCellStyle getCellStyle(HSSFWorkbook workbook,String align,HSSFFont font,boolean isborder){
//样式
HSSFCellStyle cellStyle=workbook.createCellStyle();
cellStyle.setFillForegroundColor((short)13);
if(isborder){
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
}
if(G4Utils.isNotEmpty(font)){
cellStyle.setFont(font);
}
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("@"));
if(align.equals("left")){
cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
}
if(align.equals("right")){
cellStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
}
if(align.equals("center")){
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
}
return cellStyle;
}
public void ExportExcel(String pagetitle,String[] headList, String[] colunmnames, List list, HSSFWorkbook workbook,String align,String headtitle,String bodyalign,String [] columnwidth) {
/* log.debug("---------进入ExportExcelUtil.ExportExcel()开始");*/
// 创建一页
HSSFSheet sheet = workbook.createSheet(pagetitle);
PageConfig(sheet,true,8);//设置excel属性
HSSFCellStyle headtStyle=getCellStyle(workbook, "center", getFont(16, "宋体", true, workbook), false);
createExecleHead(sheet,colunmnames.length-1,align,headtStyle,headtitle);//创建属性头部
// 在索引1的位置创建行(第二行)
HSSFRow row1 = sheet.createRow((short) 1);
// 设置单元格样式
HSSFCellStyle cellStyle =getCellStyle(workbook,bodyalign,null,true);
for(int j=0;j<headList.length;j++){
HssfCellConfig(row1.createCell((short)j),cellStyle,headList[j]);
}
System.out.println("--------进入ExportExcelUtil.列标题拼接完成-------");
for (int n=0;n<list.size();n++) {
try
{
HSSFRow row2= sheet.createRow((short) 2+n);
for(int i=0;i<colunmnames.length;i++){
Object o = Ognl.getValue(colunmnames[i],list.get(n));
HssfCellConfig(row2.createCell((short) i),cellStyle,o);
}
} catch (Exception e) {
System.out.println("---------组合Excel出错------"+e);
log.debug("---------组合Excel出错------"+e);
e.printStackTrace();
}
}
for(int i=0;i<columnwidth.length;i++){
int width= Integer.valueOf(columnwidth[i]) * 256;
sheet.setColumnWidth((short)i,(short)width);
}
System.out.println("----------进入ExportExcelUtil.数据拼接完成---------") ;
log.debug("---------进入ExportExcelUtil.数据拼接完成------------");
log.debug("---------进入ExportExcelUtil.ExportExcel()结束");
}