Java로 Excel 파일을 내보내는 방법 소개(코드 예)
Requirements
각 xmpp 컴퓨터실의 온라인/오프라인 사용자 정보를 다음으로 내보냅니다. 엑셀 표(예약된 작업 + 웹 버튼), 다운로드할 수 있도록 웹 페이지에 다운로드 버튼을 제공합니다.
효과 미리보기
파일 효과 내보내기# 🎜🎜#
- 프론트엔드 작성 방법은 회사 프레임워크이므로 일반적인 의미만 이해하세요.
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); /** * 导出Excel * @param sheetName sheet名称 * @param title 标题 * @param values 内容 * @param wb HSSFWorkbook对象 * @return */ public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,List<userinfo> valueList, HSSFWorkbook wb){ // 第一步,创建一个HSSFWorkbook,对应一个Excel文件 if(wb == null){ wb = new HSSFWorkbook(); } // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet HSSFSheet sheet = wb.createSheet(sheetName); // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制 HSSFRow row = sheet.createRow(0); // 第四步,创建单元格,并设置值表头 设置表头居中 HSSFCellStyle style = wb.createCellStyle(); // 创建一个居中格式 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //声明列对象 HSSFCell cell = null; //创建标题 for(int i=0;i<title.length> 0) { for(int i=0;i<valuelist.size><br>2. Excel 파일 생성 방법<pre class="brush:php;toolbar:false"> public void run() throws InterruptedException, IOException { ExportExcel(); } /** * 定时导出XMPP每个机房(一个集群)的在线用户的信息 * 导出信息:用户账号,mac地址,登陆的IP,登陆域名,机顶盒的型号,版本,和以及登陆所在节点的ip, * 显示 登陆的时间,登陆的时长(现在的时间减去登陆的时间)。 */ public String ExportExcel() { String result = ""; try { ... result = ImportDataExcel(offlineUserInfoList, serverName, false); logger.info("**此次处理离线结果为:"+result); ... } catch (Exception e) { result = "failed"; e.printStackTrace(); } return result; } /** * 导出用户信息数据到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 = {"用户账号","mac地址","登陆IP","登陆域名","机顶盒型号", "机顶盒版本", "登录所在节点的IP", "登陆时间", "登陆时长"}; //设置日期格式 SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); // new Date()为获取当前系统时间,也可使用当前时间戳 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文件生成后存储的位置。 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; }</userinfo>
3. 구성 파일
@SuppressWarnings("deprecation") @Resource("userLoginService") @Bean("contbiz.imoss.userloginservice") public class UserChannelLoginService { ... @Post @Path("exportExcel") public String ExportExcel() { String result = ""; result = exportXMPPUserInfo.ExportExcel(); return result; } ... }
#导出文件路径:导出XMPP各个机房的在线用户信息Excel表, #<require> /spring/config.properties|xmpp.export.excel.path=D:\Doc\test111 #定时任务时间:导出XMPP各个机房的在线用户信息Excel表, #<require> /spring/config.properties|xmpp.export.excel.time=0 44,45,46,47 20 11 * ?</require></require>
5. 프런트 엔드
<!-- 指定执行的目标类、方法 --> <bean> <!-- 指定任务类 --> <property></property> <!-- 指定任务方法 --> <property></property> <property></property> </bean> <!-- 设置执行任务以及时间 --> <bean> <property> <ref></ref> </property> <property> <value>${xmpp.export.excel.time}</value> </property> </bean> <!-- 启动定时器 --> <bean> <property> <list> <!-- <ref bean="autoSmsB2cJobDetailSimpleTrigger" /> --> <ref></ref> </list> </property> </bean>
위 내용은 Java로 Excel 파일을 내보내는 방법 소개(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

GO에서 범위는 데이터 유형을 반복하고 해당 값을 반환하는 데 사용됩니다. 1. 슬라이스 및 배열의 경우 범위는 인덱스 및 요소 사본을 반환합니다. 2. 원치 않는 인덱스 또는 값은 _를 사용하여 무시할 수 있습니다. 3. 맵의 경우 범위는 키와 값을 반환하지만 반복 순서는 고정되지 않았습니다. 4. 문자열의 경우 범위는 룬 색인 및 문자 (룬 유형), 유니 코드를 지원합니다. 5. 채널의 경우 범위는 채널이 닫히고 단일 요소 만 반환 될 때까지 값을 계속 읽습니다. 범위를 사용하면 인덱스를 수동으로 관리하지 않으므로 반복을 간단하고 안전하게 만듭니다.

의미있는 이름 지정을 사용하십시오 : IntdaysSinceModification과 같은 변수; 코드 의도를 명확하게하기위한 getUserrolseByUserName ()과 같은 방법; 2. 함수는 작아야하며 한 가지만 수행해야합니다. 예를 들어, CreateUser ()는 validatequest () 및 maptouser ()와 같은 단일 책임 메소드로 나뉩니다. 3. 의견을 줄이고 자기 상승 코드 작성 코드 : 중복 주석 대신 userhasprivilegedAccess ()를 사용하십시오. 4. 우아하게 오류를 처리하십시오 : 예외를 무시하지 말고, 시도-자원을 사용하여 자원을 자동으로 관리하십시오. 5. "보이 스카우트 규칙"을 따르십시오 : 수정할 때마다 변수를 최적화하십시오.

Subprocess.run ()을 사용하여 쉘 명령을 안전하게 실행하고 출력을 캡처하십시오. 주입 위험을 피하기 위해 목록에 매개 변수를 전달하는 것이 좋습니다. 2. 쉘 특성이 필요한 경우, shell = true를 설정할 수 있지만 명령 주입을 조심하십시오. 3. 하위 프로세스를 사용하여 실시간 출력 처리를 실현하십시오. 4. SET Check = 명령이 실패 할 때 예외를 던지기 위해 true; 5. 간단한 시나리오에서 체인을 직접 호출하여 출력을 얻을 수 있습니다. OS.System () 또는 더 이상 사용되지 않은 모듈을 사용하지 않으려면 일상 생활에서 Subprocess.run ()에 우선 순위를 부여해야합니다. 위의 방법은 파이썬에서 쉘 명령을 실행하는 핵심 사용을 무시합니다.

동시 처리에서 JavaScript의 웹 워크와 Javathreads 사이에는 필수적인 차이가 있습니다. 1. JavaScript는 단일 스레드 모델을 채택합니다. 웹 워크 사람들은 브라우저에서 제공하는 독립 스레드입니다. UI를 차단하지는 않지만 DOM을 작동 할 수없는 시간 소모적 작업을 수행하는 데 적합합니다. 2. Java는 스레드 클래스를 통해 생성 된 언어 수준의 실제 멀티 스레딩을 지원하며 복잡한 동시 논리 및 서버 측 처리에 적합합니다. 3. 웹 워크는 postMessage ()를 사용하여 주 스레드와 통신하는데, 이는 매우 안전하고 고립된다. Java 스레드는 메모리를 공유 할 수 있으므로 동기화 문제에주의를 기울여야합니다. 4. 웹 워크는 이미지 처리 및와 같은 프론트 엔드 병렬 컴퓨팅에 더 적합합니다.

단일 책임 원칙 (SRP)은 클래스가 저축 및 우편 발송을 순서 처리하는 것과 같은 하나의 기능에 대해서만 책임을 져야합니다. 2. OCP (Opening and Closing Principle)는 계산기를 수정하지 않고 새 그래픽을 추가하는 것과 같은 확장 및 수정을위한 확장 및 폐쇄를 요구합니다. 3. Richter 교체 원칙 (LSP)은 서브 클래스가 제곱 상속 사각형으로 인한 행동 이상을 피하기 위해 독립 클래스를 사용하는 것과 같이 프로그램을 파괴하지 않고 부모 클래스를 대체 할 수 있어야합니다. 4. 인터페이스 격리 원리 (ISP)는 클라이언트가 다중 기능 장치 인터페이스를 독립 인쇄, 스캔 및 팩스 인터페이스로 분할하는 것과 같은 원치 않는 인터페이스에 의존해서는 안됩니다. 5. DIP (의존성 반전 원리)는 높은 수준의 모듈이 저수준 모듈에 의존하지 않으며 Orderservice와 같은 추상화에 의존해야합니다.

GraphQL은 공식 지원을 통해 SpringBoot에 쉽게 통합 될 수 있습니다. 1. 스프링 부트 스타터 그라프 QL을 사용하여 종속성을 추가하십시오. 2. 쿼리 및 돌연변이를 선언하기 위해 Schema.graphQls 파일을 리소스에서 정의하십시오. 3. @Controller를 사용하여 @QueryMapping 및 @MutationMapping과 협력하여 데이터 수집을 달성합니다. 4. GraphIQL 인터페이스 테스트 API 활성화; 5. 입력 검증, n 1 쿼리 방지, 보안 제어 등과 같은 모범 사례를 따르고 궁극적으로 유연하고 효율적인 클라이언트 중심 API를 구현하십시오.

Resilience4J는 회로 차단기, 현재 제한, 재 시도 및 기타 메커니즘을 통한 Java 마이크로 서비스의 유연성을 향상시킵니다. 1. 회로 차단기를 사용하여 캐스케이드 고장을 방지하고 서비스가 자주 실패 할 때 요청이 전송되는 것을 방지합니다. 2. 현재 한계 제어를 사용하여 동시 액세스를 제어하여 갑작스런 트래픽을 압도하는 하류 서비스를 피하십시오. 3. 재 시도 메커니즘을 통해 일시적인 오류에 대응하지만 유효하지 않은 재 시도 및 자원 폐기물을 피하십시오. 4. 시스템의 전반적인 탄력성을 향상시키기 위해 여러 전략을 결합하여 사용될 수 있지만 정책 간의 상호 영향에주의를 기울여야합니다. 이러한 기능을 올바르게 구성하면 분산 시스템의 안정성과 결함 공차가 크게 향상 될 수 있습니다.

ProjectLoominTroduceSvirtsLeadStosolveDjava의 ScalablEThreading.1. VirtualthreadSarejvm-MANIGED, 저속 프린트 리드 스테이 킹 오버 홀리 컨택 오브 컨트리 런 스레드 스레드 스레드 스파트
