您的位置:首页 > 其它

导出Excel--02

2015-09-30 09:32 246 查看
package com.web.util;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import com.web.model.AccessRecord;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

/*
* 生成访问记录Excel表格工具类
*/
public class arexcelUtil {
private static WritableCellFormat wcf_value;            // 表格数据样式
private static WritableCellFormat wcf_value_left;
private static WritableCellFormat wcf_key;                // 表头样式
private static WritableCellFormat wcf_name_left;        // 表名样式
private static WritableCellFormat wcf_name_right;        // 表名样式
private static WritableCellFormat wcf_name_center;        // 表名样式
private static WritableCellFormat wcf_title;            // 页名称样式
private static WritableCellFormat wcf_percent_float;

private static String pathStr = "C:/Users/Administrator/Desktop/ar";        //将导出Excel表格的路径设置为桌面

// 生成Excel文件
public void genarateExcel(List list) throws Exception{
/******   定义表格格式start    *****/
WritableFont wf_key = new jxl.write.WritableFont(WritableFont.createFont("微软雅黑"), 10, WritableFont.BOLD);
WritableFont wf_value = new jxl.write.WritableFont(WritableFont.createFont("微软雅黑"), 10, WritableFont.NO_BOLD);
//设置单元格样式
wcf_value = new WritableCellFormat(wf_value);                                //单元格字体样式
wcf_value.setAlignment(jxl.format.Alignment.CENTRE);                            //单元格水平对齐样式
wcf_value.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);            //单元格垂直对齐样式
wcf_value.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);        //单元格边框样式

wcf_value_left = new WritableCellFormat(wf_value);
wcf_value_left.setAlignment(jxl.format.Alignment.LEFT);
wcf_value_left.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
wcf_value_left.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);
wcf_value_left.setWrap(true);

wcf_key = new WritableCellFormat(wf_key);
wcf_key.setAlignment(jxl.format.Alignment.CENTRE);
wcf_key.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);

wcf_name_left = new WritableCellFormat(wf_key);
wcf_name_left.setAlignment(Alignment.LEFT);
wcf_name_left.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);

wcf_name_right = new WritableCellFormat(wf_key);
wcf_name_right.setAlignment(Alignment.LEFT);

wcf_name_center = new WritableCellFormat(wf_key);
wcf_name_center.setAlignment(Alignment.CENTRE);

jxl.write.NumberFormat wf_percent_float = new jxl.write.NumberFormat("0.00");    //定义单元浮点数据类型
wcf_percent_float = new jxl.write.WritableCellFormat(wf_value,wf_percent_float);
wcf_percent_float.setAlignment(jxl.format.Alignment.CENTRE);
wcf_percent_float.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
wcf_percent_float.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);

WritableFont wf_title = new jxl.write.WritableFont(WritableFont.createFont("微软雅黑"), 24, WritableFont.NO_BOLD);        //定义标题样式
wcf_title = new WritableCellFormat(wf_title);
wcf_title.setAlignment(Alignment.CENTRE);
wcf_title.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);
/******   定义表格格式end    *****/

//在指定的路径生成空白的xls文件
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
System.out.println();
String filename = pathStr + df.format(new Date()) + ".xls";
File file = new File(filename);
file.createNewFile();

//根据传输过来的list,定义excel表格的列数
//int maxRow = list.size();
//int maxCol = 10;
Iterator it = list.iterator();

try{
WritableWorkbook wb = Workbook.createWorkbook(file);
//设置Excel工作簿名称
WritableSheet ws = wb.createSheet("访问报表", 0);
int startRowNum = 0;    // 起始行
int startColNum = 0;    // 起始列
int maxColSize = 8;        // 最大列数
// 设置列宽
ws.setColumnView(0, 10);
ws.setColumnView(1, 18);
ws.setColumnView(2, 12);
ws.setColumnView(3, 12);
ws.setColumnView(4, 12);
ws.setColumnView(5, 28);
ws.setColumnView(6, 28);
ws.setColumnView(7, 15);

ws.addCell(new Label(startColNum, startRowNum, "来访单位记录", wcf_title));
ws.mergeCells(startColNum, startRowNum, startColNum + maxColSize- 1, startRowNum);    //合并单元格,合并(1,0)到(1,9)
startColNum = 0;
startRowNum++;
//第1行,绘制表头
ws.addCell(new Label(startColNum, startRowNum, "标题1",wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, "标题3", wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, "标题3", wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, "标题4", wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, "标题5", wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, "标题6", wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, "标题7", wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, "标题8", wcf_key));
startColNum++;
//将行数加1,列数重置为0
startRowNum++;
startColNum = 0;

//添加记录
while(it.hasNext()){
AccessRecord ar = (AccessRecord) it.next();

ws.addCell(new Label(startColNum, startRowNum, String.valueOf(ar.getId()) ,wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, ar.getArOrganization() , wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, ar.getArName() , wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, ar.getPid(), wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, ar.getPname(), wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, ar.getAccessDate()+ar.getAccessTime(), wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, ar.getDepartureDate()+ar.getDepartureTime(), wcf_key));
startColNum++;
ws.addCell(new Label(startColNum, startRowNum, ar.getContent(), wcf_key));
startColNum++;
//将行数加1,列数重置为0
startRowNum++;
startColNum = 0;
}

wb.write();        //生成Excel工作簿
wb.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: