자바 웹 개발, 그것은 종종 http://www.aliyun.com/zixun/aggregation/16544.html 많은 양의 데이터 내보낼 필요가 "> 엑셀, JXL 직접 Excel 생성 POI를 사용 하 여, 메모리 오버플로우를 발생 하는 것이 쉽습니다.
1, 방법, CSV 서식 파일에 데이터를 작성 하는 것입니다.
Excel과 직접 1 CSV 파일을 열 수 있습니다.
2 쓰기 CSV 파일의 효율성은 TXT 파일의 효율 높은.
3 동일한 데이터 콘텐츠, 생성 된 CSV 파일 크기는 생성 된 Excel 파일 보다 훨씬 작습니다.
위에서 CSV 파일에 의해 생성 된 메모리는 절대적으로 보다 빌드 Excel 파일을 볼 수 있습니다.
2 열 때 Excel에서 CSV 파일을 생성 하는 특정 형식에는 전체 행 및 열 형식입니다.
예: Excel에서 서식:
이 경우 CSV 파일에서 형식 이어야 합니다.
즉, 열과 열 사이 해야 쉼표의 한국어 IME 상태를 사용 하 여 "," 간격: 첫 번째 칼, 코 오 롱.
간단한 예를 들어 Excel로 데이터를 내보낼 Struts2에 3.
Csvaction, CSV 파일을 생성 하 고 다운로드 작업을 생성 된 CSV 파일의 전체 경로 전달 합니다.
자바 코드 <!-[경우! vml] →
<!-[endif] →
패키지 cn.luxh.struts2.action;
가져오기 Java.io.FileWriter;
가져오기 java.io.IOException;
가져오기 Java.text.SimpleDateFormat;
가져오기 java.util.ArrayList;
가져오기 Java.util.Date;
가져오기 java.util.List;
가져오기 Cn.luxh.struts2.entity.Novel;
가져오기 Com.opensymphony.xwork2.ActionSupport;
/**
* 데이터를 CSV 파일로 내보내려면
* @author Luxh
*/
공용 클래스 Csvaction Actionsupport 없음 확장
개인 정적 최종 긴 serialversionuid =-2862629695443964658 l;
/**
* 파일 이름 전체 경로 포함 하
* 다운로드 다운로드에 대 한 작업 전달
*/
개인 문자열 이름;
/**
데이터를 내보낼
*/
공개 문자열 Exportdata2csv () 없음
소설 목록 = Getnovels ();
파일 이름 = "D:/novels.csv";
Writedata2csv (소설, 파일 이름);
성공 반환
}
/**
일부 데이터를 생성
* 그것은 실제로 많은 양의 데이터베이스에서 데이터를 분리 가능
*/
개인 목록 Getnovels () 없음
소설 목록 = new ArrayList ();
소설 Novel1 새로운 소설 = ("첫 번째 칼", "향수", 새로운 날짜 ());
소설 Novel2 새로운 소설 = ("도 서 검 술과 증오 기록", "진 용", 새로운 날짜 ());
소설 Novel3 새로운 소설 = ("루 샤 오 펑 전설", "향수", 새로운 날짜 ());
소설 Novel4 새로운 소설 = ("사슴 딩 키", "진 용", 새로운 날짜 ());
Novels.add (NOVEL1);
Novels.add (NOVEL2);
Novels.add (NOVEL3);
Novels.add (NOVEL4);
반환 소설;
}
/**
* CSV 파일에 특정 형식에 데이터 쓰기
* @param 소설 데이터 수집
* @param 파일 CSV 파일 전체 경로
*/
public void Writedata2csv (소설 목록, 파일 이름 문자열) 없음
FileWriter FW = NULL;
시도 없음
FW = 새로운 FileWriter (파일 이름);
출력 헤더
"," 간격 열 사이 참고, 선 필요 반환 라인 "\ r \ n" 작성
제목 문자열 = "일련 번호, 새로운 이름, 저자, 출판 날짜 \ r \ n";
Fw.write (제목);
콘텐츠 문자열 = null;
SimpleDateFormat 자위대 = 새로운 SimpleDateFormat ("Yyyy-mm-dd");
대 한 (int i = 0; 난
소설 소설 (i); Novels.get =
"," 간격 열 사이 참고, 선 필요 반환 라인 "\ r \ n" 작성
콘텐츠 (i + 1) = "," +novel.getname + () + +novel.getauthor () "," + "," +sdf.format (Novel.getpublishdate ()) + "\ r \ n";
Fw.write (콘텐츠);
}
} catch (예외 e) 없음
E.printstacktrace ();
던져 새로운 RuntimeException (e);
} 마지막으로 없음
시도 없음
경우 (fw! = null) 없음
Fw.close ();
}
catch (e IOException) 없음
E.printstacktrace ();
}
}
}
}
구성 파일:
XML 코드 <!-[경우! vml] →
<!-[endif] →
다운로드
다운로드
$ {파일 이름}
4, 볼 동일한 데이터 콘텐츠, CSV 파일과 Excel 파일 크기 비교: