這篇文章主要介紹了Java如何導(dǎo)出excel文件,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),清江浦企業(yè)網(wǎng)站建設(shè),清江浦品牌網(wǎng)站建設(shè),網(wǎng)站定制,清江浦網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,清江浦網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
需求
將每個(gè)xmpp機(jī)房的在線/離線用戶(hù)信息導(dǎo)出到Excel表格中(定時(shí)任務(wù)+網(wǎng)頁(yè)按鈕),并在網(wǎng)頁(yè)上提供下載按鈕進(jìn)行下載。
效果預(yù)覽
導(dǎo)出文件效果
/** "..."為公司業(yè)務(wù)代碼,大多為從緩存或者數(shù)據(jù)庫(kù)中獲取導(dǎo)出數(shù)據(jù),不影響導(dǎo)出功能。
前端寫(xiě)法為公司框架,理解大致意思就好。
*/
一、工具類(lèi):生成excel對(duì)象wb
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文件工具類(lèi) * @author wxin * */ public class ExcelUtil { private static Logger logger = Logger.getInstance(ExcelUtil.class); /** * 導(dǎo)出Excel * @param sheetName sheet名稱(chēng) * @param title 標(biāo)題 * @param values 內(nèi)容 * @param wb HSSFWorkbook對(duì)象 * @return */ public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,List<UserInfo> valueList, 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<title.length;i++){ cell = row.createCell((short) i); cell.setCellValue(title[i]); cell.setCellStyle(style); } //創(chuàng)建內(nèi)容 if (null != valueList && valueList.size() > 0) { for(int i=0;i<valueList.size();i++){ row = sheet.createRow(i + 1); UserInfo userInfo = valueList.get(i); String []userInfoArray = {userInfo.getLoginName(),userInfo.getStbMac(),userInfo.getLoginIp(), userInfo.getServerDomain(), userInfo.getTerminalModel(),userInfo.getTerminalVersion(), userInfo.getServerIp(), userInfo.getUpdateTime(),userInfo.getLoginTime()}; for(int j=0;j<userInfoArray.length;j++){ //將內(nèi)容按順序賦給對(duì)應(yīng)的列對(duì)象 row.createCell((short) j).setCellValue(userInfoArray[j]); } } } else { logger.error("用戶(hù)信息無(wú)數(shù)據(jù)"); } return wb; } }
二、生成excel文件方法
public void run() throws InterruptedException, IOException { ExportExcel(); } /** * 定時(shí)導(dǎo)出XMPP每個(gè)機(jī)房(一個(gè)集群)的在線用戶(hù)的信息 * 導(dǎo)出信息:用戶(hù)賬號(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)出用戶(hù)信息數(shù)據(jù)到Excel表格 * @param userInfoList * @return msg “failed” or “success” */ public String ImportDataExcel(List<UserInfo> userInfoList, String serverName , boolean isOnline) { String msg = ""; String fileName = ""; String sheetName = ""; String[] title = {"用戶(hù)賬號(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+"在線用戶(hù)信息表"; } else { fileName = serverName+"-offline-usersInfo-"+date+".xls"; sheetName = serverName+"離線用戶(hù)信息表"; } 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("生成用戶(hù)信息Excel表格成功:"+ fileName); } catch (Exception e){ msg = "failed"; logger.error("生成用戶(hù)信息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ī)房的在線用戶(hù)信息Excel表, #<require> /spring/config.properties|xmpp.export.excel.path=D:\Doc\test111 #定時(shí)任務(wù)時(shí)間:導(dǎo)出XMPP各個(gè)機(jī)房的在線用戶(hù)信息Excel表, #<require> /spring/config.properties|xmpp.export.excel.time=0 44,45,46,47 20 11 * ?
<!-- 指定執(zhí)行的目標(biāo)類(lèi)、方法 --> <bean id="autoSmsB2cJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 指定任務(wù)類(lèi) --> <property name="targetObject" ref="contbiz.imoss.exportXMPPUserInfo" /> <!-- 指定任務(wù)方法 --> <property name="targetMethod" value="run" /> <property name="concurrent" value="false" /> </bean> <!-- 設(shè)置執(zhí)行任務(wù)以及時(shí)間 --> <bean id="autoSmsB2cJobDetailCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="autoSmsB2cJobDetail" /> </property> <property name="cronExpression"> <value>${xmpp.export.excel.time}</value> </property> </bean> <!-- 啟動(dòng)定時(shí)器 --> <bean id="ssschedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false"> <property name="triggers"> <list> <!-- <ref bean="autoSmsB2cJobDetailSimpleTrigger" /> --> <ref bean="autoSmsB2cJobDetailCronTrigger" /> </list> </property> </bean>
五、前端
/**前端寫(xiě)法為公司框架,理解大致意思就好。*/ ... <input id="exportExcel" type="submit" value="導(dǎo)出" /> ... <script> //導(dǎo)出excel W.$('exportExcel').on('click',function(e){ W.create('userLoginService/exportExcel').done(function(result){ if (result == "success") { W.alert("導(dǎo)出所有在線/離線用戶(hù)成功"); } else { W.alert("導(dǎo)出所有在線/離線用戶(hù)失敗"); } }); }); </script>
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享Java如何導(dǎo)出excel文件內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!
網(wǎng)頁(yè)名稱(chēng):Java如何導(dǎo)出excel文件
URL標(biāo)題:http://www.rwnh.cn/article2/igicoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、商城網(wǎng)站、做網(wǎng)站、微信公眾號(hào)、標(biāo)簽優(yōu)化、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)