利用poi-SXSSFWorkbook导出数据
来源:互联网 发布:apache beam maven 编辑:程序博客网 时间:2024/06/05 12:39
一个笨方法,有简洁的方法欢迎可以讨论
public void download(){
SXSSFWorkbook swb = new SXSSFWorkbook(10000);// 创建一个Excel文件(海量数据)
HttpServletRequest request = ServletActionContext.getRequest();
//获取数据
Company com = (Company) request.getSession().getAttribute("CompanyInfo");String starttime = request.getParameter("starttime")+" 00:00:00";
String endtime = request.getParameter("endtime")+" 23:59:59";
String room = request.getParameter("room");
String page = "";
String companyId = com.getCompanyid();
if (room != null) {
try {
room = java.net.URLDecoder.decode(room, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
Sheet sh = swb.createSheet("会议列表 ");// 创建sheet1-会议管理
Sheet sh1 = swb.createSheet("会议详情");// 创建sheet2-会议详情
// 标题栏样式
CellStyle cellStyle = swb.createCellStyle();
cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
cellStyle.setFillForegroundColor(SKY_BLUE.index);
cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 下边框
cellStyle.setBorderLeft(CellStyle.BORDER_THIN);// 左边框
cellStyle.setBorderTop(CellStyle.BORDER_THIN);// 上边框
cellStyle.setBorderRight(CellStyle.BORDER_THIN);// 右边框
cellStyle.setWrapText(false);
// sheet1 ,设置列宽
sh.setColumnWidth(0, 20 * 256);
sh.setColumnWidth(1, 20 * 256);
sh.setColumnWidth(2, 22 * 256);
sh.setColumnWidth(3, 22 * 256);
sh.setColumnWidth(4, 20 * 256);
sh.setColumnWidth(5, 20 * 256);
sh.setColumnWidth(6, 15 * 256);
// sheet2 ,设置列宽
sh1.setColumnWidth(0, 20 * 256);
sh1.setColumnWidth(1, 20 * 256);
sh1.setColumnWidth(2, 22 * 256);
sh1.setColumnWidth(3, 22 * 256);
sh1.setColumnWidth(4, 20 * 256);
sh1.setColumnWidth(5, 20 * 256);
sh1.setColumnWidth(6, 15 * 256);
sh1.setColumnWidth(7, 15 * 256);
Row rowHeader = sh.createRow(0);
Cell cellHeader = rowHeader.createCell(0);
cellHeader.setCellValue("会议室");
cellHeader.setCellStyle(cellStyle);
cellHeader = rowHeader.createCell(1);
cellHeader.setCellValue("实际开始时间");
cellHeader.setCellStyle(cellStyle);
cellHeader = rowHeader.createCell(2);
cellHeader.setCellValue("实际结束时间");
cellHeader.setCellStyle(cellStyle);
cellHeader = rowHeader.createCell(3);
cellHeader.setCellValue("会议时长");
cellHeader.setCellStyle(cellStyle);
cellHeader = rowHeader.createCell(4);
cellHeader.setCellValue("当前人数");
cellHeader.setCellStyle(cellStyle);
cellHeader = rowHeader.createCell(5);
cellHeader.setCellValue("状态");
cellHeader.setCellStyle(cellStyle);
Row rowHeader1 = sh1.createRow(0);
Cell cellHeader1 = rowHeader1.createCell(0);
cellHeader1.setCellValue("会议室");
cellHeader1.setCellStyle(cellStyle);
cellHeader1 = rowHeader1.createCell(1);
cellHeader1.setCellValue("用户");
cellHeader1.setCellStyle(cellStyle);
cellHeader1 = rowHeader1.createCell(2);
cellHeader1.setCellValue("用户类型");
cellHeader1.setCellStyle(cellStyle);
cellHeader1 = rowHeader1.createCell(3);
cellHeader1.setCellValue("加入方式");
cellHeader1.setCellStyle(cellStyle);
cellHeader1 = rowHeader1.createCell(4);
cellHeader1.setCellValue("加入时间");
cellHeader1.setCellStyle(cellStyle);
cellHeader1 = rowHeader1.createCell(5);
cellHeader1.setCellValue("离开时间");
cellHeader1.setCellStyle(cellStyle);
cellHeader1 = rowHeader1.createCell(6);
cellHeader1.setCellValue("操作系统");
cellHeader1.setCellStyle(cellStyle);
cellHeader1 = rowHeader1.createCell(7);
cellHeader1.setCellValue("会议时长");
cellHeader1.setCellStyle(cellStyle);
int i = 1;
// 组装会议管理列表查询数据
Map<String, String> map = new HashMap<String, String>();
map.put("tname", com.getInfo2());
map.put("starttime", starttime);
map.put("endtime", endtime);
map.put("room", room);
map.put("page", page);
// 会议管理-接收查询得到的结果集
List<Map<String, Object>> meetinglist = new ArrayList<Map<String, Object>>();
// 会议管理-接收处理后的结果集
List<Map<String, Object>> meetlist = new ArrayList<Map<String, Object>>();
if (room.equals("")) {
meetinglist = conferencecallService.querymeetinfolist(map);
List<Map<String, Object>> emlist = new ArrayList<Map<String, Object>>();
if (companyId != null) {
emlist = employeeService.queryByCompanyId(companyId);
}
meetlist = handleConferenceName(meetinglist, emlist);
} else {
map.put("companyid", companyId);
meetinglist = conferencecallService.meetinfolistwithroom(map);
for (Map<String, Object> map2 : meetinglist) {
String displayname = map2.get("DisplayName") == null ? map2
.get("RoomOwner").toString() : map2.get(
"DisplayName").toString();
map2.put("ConferenceName", displayname);
meetlist.add(map2);
}
}
// 会议管理-处理列显示值
List<Map<String, Object>> meetlists = handleColumn(meetlist);
//将会议管理列表值写入cell中
for (Map<String, Object> map2 : meetlists) {
Row rowHeader2 = sh.createRow(i);
Cell cellHeader2 = rowHeader2.createCell(0);
cellHeader2.setCellValue(getCellValue(map2.get("ConferenceName")));
cellHeader2 = rowHeader2.createCell(1);
cellHeader2.setCellValue(getCellValue(map2.get("starttime")));
cellHeader2 = rowHeader2.createCell(2);
cellHeader2.setCellValue(getCellValue(map2.get("endtime")));
cellHeader2 = rowHeader2.createCell(3);
cellHeader2.setCellValue(getCellValue(map2.get("bettime")));
cellHeader2 = rowHeader2.createCell(4);
cellHeader2.setCellValue(getCellValue(map2.get("online")));
cellHeader2 = rowHeader2.createCell(5);
cellHeader2.setCellValue(getCellValue(map2.get("status")));
i++;
if (i % 100 == 0) {
((SXSSFSheet) sh1).flushRows();
}
}
//存放会议id的集合
HashMap<String, Object> map3 = new HashMap<String, Object>();
//存放会议室名称的集合
List<Map<String, Object>> roomnamelist = new ArrayList<Map<String,Object>>();
int j = 1;
StringBuffer callids = new StringBuffer();
String meetid = "";
for (Map<String, Object> map2 : meetlists) {
//组装会议室名称的集合
String meetid1 = map2.get("UniqueCallID").toString();
String meetname = map2.get("ConferenceName").toString();
Map<String, Object> roommap = new HashMap<String, Object>();
roommap.put("callid", meetid1);
roommap.put("roomname", meetname);
roomnamelist.add(roommap);
//拼接会议id的字符串
callids.append("\"");
callids.append(meetid1);
callids.append("\"");
callids.append(",");
}
if(callids.lastIndexOf(",") > 0){
meetid = callids.substring(0, callids.lastIndexOf(","));
map3.put("meetid", meetid);
}
List<Map<String, Object>> detaillist = conferencecallService.querymeetinfo(map3);
List<Map<String, Object>> meetinfolist = handlemeetinfo(detaillist,roomnamelist);
for (Map<String, Object> map4 : meetinfolist) {
Row rowHeader2 = sh1.createRow(j);
Cell cellHeader2 = rowHeader2.createCell(0);
cellHeader2.setCellValue(getCellValue(map4.get("roomname")));
cellHeader2 = rowHeader2.createCell(1);
cellHeader2.setCellValue(getCellValue(map4.get("CallerName")));
cellHeader2 = rowHeader2.createCell(2);
cellHeader2.setCellValue(getCellValue(map4.get("CallerID")));
cellHeader2 = rowHeader2.createCell(3);
cellHeader2.setCellValue(getCellValue(map4.get("EndpointType")));
cellHeader2 = rowHeader2.createCell(4);
cellHeader2.setCellValue(getCellValue(map4.get("JoinTime")));
cellHeader2 = rowHeader2.createCell(5);
cellHeader2.setCellValue(getCellValue(map4.get("LeaveTime")));
cellHeader2 = rowHeader2.createCell(6);
cellHeader2.setCellValue(getCellValue(map4.get("ApplicationOs")));
cellHeader2 = rowHeader2.createCell(7);
cellHeader2.setCellValue(getCellValue(map4.get("btime")));
j++;
if (j % 100 == 0) {
((SXSSFSheet) sh1).flushRows();
}
}
largeCreatExcel(swb);
} catch (Exception e) {
logger.info(e.getMessage());
}
}
// 数据写入excel
public void largeCreatExcel(SXSSFWorkbook swb) {
HttpServletResponse response = ServletActionContext.getResponse();
String fileName = null;
try {
fileName = new String("会议召开情况表.xlsx".getBytes("UTF-8"), "iso8859-1");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
response.reset();
response.setHeader("Content-disposition", "attachment; filename="
+ fileName);
response.setContentType("application/octet-stream;charset=UTF-8");
OutputStream os;
try {
os = response.getOutputStream();
swb.write(os);
os.flush();
os.close();
swb.dispose();
} catch (IOException e) {
e.printStackTrace();
}
}
- 利用poi-SXSSFWorkbook导出数据
- 大数据导出POI之SXSSFWorkbook
- poi excel大数据导出-SXSSFWorkbook
- 利用SXSSFWorkbook导出excel
- java使用apache.poi SXSSFWorkbook导出大数据的execl表格并下载
- POI操作Excel2007 “SXSSFWorkbook”处理海量数据
- 关于SXSSFWorkbook导出大批量数据的问题
- Java Excel SXSSFWorkbook大量数据导出
- java利用poi导出数据到excel
- 利用poi数据导出到excel demo
- POI操作Excel2007实例二之“SXSSFWorkbook”处理海量数据
- POI操作Excel2007实例二之“SXSSFWorkbook”处理海量数据
- POI 海量数据/大数据文件生成SXSSFWorkbook使用简介
- Java-POI-sxssfWorkbook实例
- SXSSFWorkbook 导出大批量数据和图片到excel
- Java SXSSFWorkbook 导出 excel
- 利用POI导出excel
- 利用Poi导出Excel
- 将mmd模型改造成游戏可用模型
- BorderLayout布局展示
- dsadsadsad
- fragment切换
- 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
- 利用poi-SXSSFWorkbook导出数据
- window界面下,github每次git push会出现permission denied (publickey)的解决
- POJ 3624 Charm Bracelet (01背包)
- Facebook标语
- 怎样分析 JAVA 的 Thread Dumps
- Hibernate框架ORM的实现原理
- 字符集GBK与UTF-8的区别、乱码问题
- GitHub学习
- arrayList的使用