摘要:效果預(yù)覽導(dǎo)出文件效果點(diǎn)擊下載彈出框效果代碼總覽為公司業(yè)務(wù)代碼,大多為從緩存或者數(shù)據(jù)庫(kù)中獲取導(dǎo)出數(shù)據(jù),不影響導(dǎo)出功能。導(dǎo)出導(dǎo)出導(dǎo)出所有在線離線用戶成功導(dǎo)出所有在線離線用戶失敗引用導(dǎo)出表格
需求
將每個(gè)xmpp機(jī)房的在線/離線用戶信息導(dǎo)出到Excel表格中(定時(shí)任務(wù)+網(wǎng)頁(yè)按鈕),并在網(wǎng)頁(yè)上提供下載按鈕進(jìn)行下載。
效果預(yù)覽導(dǎo)出文件效果
點(diǎn)擊下載彈出框效果代碼總覽
/** "..."為公司業(yè)務(wù)代碼,大多為從緩存或者數(shù)據(jù)庫(kù)中獲取導(dǎo)出數(shù)據(jù),不影響導(dǎo)出功能。
前端寫法為公司框架,理解大致意思就好。
*/
一、工具類:生成excel對(duì)象wb [1]
package com.onewaveinc.utils; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import com.onewaveinc.mip.log.Logger; import com.onewaveinc.user.entity.UserInfo; /** * 生成Excel文件工具類 * @author wxin * */ public class ExcelUtil { private static Logger logger = Logger.getInstance(ExcelUtil.class); /** * 導(dǎo)出Excel * @param sheetName sheet名稱 * @param title 標(biāo)題 * @param values 內(nèi)容 * @param wb HSSFWorkbook對(duì)象 * @return */ public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,ListvalueList, HSSFWorkbook wb){ // 第一步,創(chuàng)建一個(gè)HSSFWorkbook,對(duì)應(yīng)一個(gè)Excel文件 if(wb == null){ wb = new HSSFWorkbook(); } // 第二步,在workbook中添加一個(gè)sheet,對(duì)應(yīng)Excel文件中的sheet HSSFSheet sheet = wb.createSheet(sheetName); // 第三步,在sheet中添加表頭第0行,注意老版本poi對(duì)Excel的行數(shù)列數(shù)有限制 HSSFRow row = sheet.createRow(0); // 第四步,創(chuàng)建單元格,并設(shè)置值表頭 設(shè)置表頭居中 HSSFCellStyle style = wb.createCellStyle(); // 創(chuàng)建一個(gè)居中格式 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //聲明列對(duì)象 HSSFCell cell = null; //創(chuàng)建標(biāo)題 for(int i=0;i 0) { for(int i=0;i 二、生成excel文件方法[1]
public void run() throws InterruptedException, IOException { ExportExcel(); } /** * 定時(shí)導(dǎo)出XMPP每個(gè)機(jī)房(一個(gè)集群)的在線用戶的信息 * 導(dǎo)出信息:用戶賬號(hào),mac地址,登陸的IP,登陸域名,機(jī)頂盒的型號(hào),版本,和以及登陸所在節(jié)點(diǎn)的ip, * 顯示 登陸的時(shí)間,登陸的時(shí)長(zhǎng)(現(xiàn)在的時(shí)間減去登陸的時(shí)間)。 */ public String ExportExcel() { String result = ""; try { ... result = ImportDataExcel(offlineUserInfoList, serverName, false); logger.info("**此次處理離線結(jié)果為:"+result); ... } catch (Exception e) { result = "failed"; e.printStackTrace(); } return result; } /** * 導(dǎo)出用戶信息數(shù)據(jù)到Excel表格 * @param userInfoList * @return msg “failed” or “success” */ public String ImportDataExcel(ListuserInfoList, String serverName , boolean isOnline) { String msg = ""; String fileName = ""; String sheetName = ""; String[] title = {"用戶賬號(hào)","mac地址","登陸IP","登陸域名","機(jī)頂盒型號(hào)", "機(jī)頂盒版本", "登錄所在節(jié)點(diǎn)的IP", "登陸時(shí)間", "登陸時(shí)長(zhǎng)"}; //設(shè)置日期格式 SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); // new Date()為獲取當(dāng)前系統(tǒng)時(shí)間,也可使用當(dāng)前時(shí)間戳 String date = df.format(new Date()); if (isOnline) { fileName = serverName+"-online-usersInfo-"+date+".xls"; sheetName = serverName+"在線用戶信息表"; } else { fileName = serverName+"-offline-usersInfo-"+date+".xls"; sheetName = serverName+"離線用戶信息表"; } HSSFWorkbook wb = new HSSFWorkbook(); wb = ExcelUtil.getHSSFWorkbook(sheetName, title, userInfoList, null); ByteArrayOutputStream os = new ByteArrayOutputStream(); try{ wb.write(os); } catch (IOException e){ msg = "failed"; e.printStackTrace(); } byte[] content = os.toByteArray(); //Excel文件生成后存儲(chǔ)的位置。 File file = new File(path+"/"+fileName); OutputStream fos = null; try{ fos = new FileOutputStream(file); fos.write(content); os.close(); fos.close(); if ("".equals(msg)) { msg = "success"; } logger.info("生成用戶信息Excel表格成功:"+ fileName); } catch (Exception e){ msg = "failed"; logger.error("生成用戶信息Excel表格失敗:"+ fileName); e.printStackTrace(); } return msg; } 三、SpringMVC
@SuppressWarnings("deprecation") @Resource("userLoginService") @Bean("contbiz.imoss.userloginservice") public class UserChannelLoginService { ... @Post @Path("exportExcel") public String ExportExcel() { String result = ""; result = exportXMPPUserInfo.ExportExcel(); return result; } ... }四、配置文件
#導(dǎo)出文件路徑:導(dǎo)出XMPP各個(gè)機(jī)房的在線用戶信息Excel表, #/spring/config.properties|xmpp.export.excel.path=D:Doc est111 #定時(shí)任務(wù)時(shí)間:導(dǎo)出XMPP各個(gè)機(jī)房的在線用戶信息Excel表, # /spring/config.properties|xmpp.export.excel.time=0 44,45,46,47 20 11 * ? ${xmpp.export.excel.time} 五、前端
/**前端寫法為公司框架,理解大致意思就好。*/ ... ...引用[1] https://www.cnblogs.com/gudon... JAVA導(dǎo)出EXCEL表格
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/72666.html
摘要:一行代碼完成對(duì)象和之間的轉(zhuǎn)換。說(shuō)明屬性列名稱四版本更新日志版本,新特性導(dǎo)出支持對(duì)象裝換為,并且支持字節(jié)數(shù)組等多種導(dǎo)出方式導(dǎo)入支持轉(zhuǎn)換為對(duì)象,并且支持文件路徑等多種導(dǎo)入方式版本,新特性字段支持類型。 《Java對(duì)象和Excel轉(zhuǎn)換工具XXL-EXCEL》 showImg(https://segmentfault.com/img/remote/1460000012470335);showI...
摘要:消費(fèi)之后,多線程處理文件導(dǎo)出,生成文件后上傳到等文件服務(wù)器。前端直接查詢并且展現(xiàn)對(duì)應(yīng)的任務(wù)執(zhí)行列表,去等文件服務(wù)器下載文件即可。這客戶體驗(yàn)不友好,而且網(wǎng)絡(luò)傳輸,系統(tǒng)占用多種問(wèn)題。拓展閱讀導(dǎo)出最佳實(shí)踐框架 產(chǎn)品需求 產(chǎn)品經(jīng)理需要導(dǎo)出一個(gè)頁(yè)面的所有的信息到 EXCEL 文件。 需求分析 對(duì)于 excel 導(dǎo)出,是一個(gè)很常見(jiàn)的需求。 最常見(jiàn)的解決方案就是使用 poi 直接同步導(dǎo)出一個(gè) exc...
摘要:我想能不能像配置文件一樣可配置的導(dǎo)入導(dǎo)出,那樣使用起來(lái)就方便許多。配置和使用下面是員工信息模型。支持多種映射,使用英文逗號(hào)進(jìn)行分割。導(dǎo)入時(shí)它會(huì)以分割前面的作為導(dǎo)入時(shí)使用的值,后面的作為導(dǎo)出時(shí)使用的值后面值進(jìn)行逆推導(dǎo)出時(shí)同理。 1.前言 在工作時(shí),遇到過(guò)這樣的需求,需要靈活的對(duì)工單進(jìn)行導(dǎo)入或?qū)С觯郧白约阂沧鲞^(guò),但使用不靈活繁瑣。我想能不能像配置文件一樣可配置的導(dǎo)入導(dǎo)出,那樣使用起來(lái)就方...
摘要:日常工作中是我們經(jīng)常需要處理的文件報(bào)表的生成數(shù)據(jù)的導(dǎo)出幾乎每個(gè)項(xiàng)目都需要寫對(duì)應(yīng)的處理作者也是編寫這塊代碼大軍的一員能否有方法讓我們不用重復(fù)編寫代碼呢能否只要簡(jiǎn)單配置就可以完成我們的生成呢作者分析了和對(duì)象的關(guān)系發(fā)現(xiàn)就是我們的一個(gè)對(duì)象是我們的一 日常工作中,Excel是我們經(jīng)常需要處理的文件,報(bào)表的生成,數(shù)據(jù)的導(dǎo)出,幾乎每個(gè)項(xiàng)目都需要寫對(duì)應(yīng)的處理.作者也是編寫這塊代碼大軍的一員,能否有方法...
閱讀 2791·2021-11-17 09:33
閱讀 4454·2021-09-22 15:57
閱讀 2866·2019-08-30 14:16
閱讀 3133·2019-08-29 14:07
閱讀 2413·2019-08-26 11:55
閱讀 3415·2019-08-23 17:07
閱讀 1725·2019-08-23 16:50
閱讀 2535·2019-08-23 16:08