'Enjoy'에 해당되는 글 177건
- 2012.11.28 Flex 3.2: Loading sub-apps
- 2012.11.28 Flex 3 SDK Downloads
- 2012.11.28 Gallileo에서 Flex Builder 사용하기 2
- 2012.11.23 OS별 CPU, memory, kernel bit 를 확인 방법
- 2012.11.08 시바타 준(柴田 淳) - 와스레 모노(忘れもの) 2
- 2012.10.16 java out of memory 힙덤프 분석 Eclipse Memory Analyzer(MAT)
- 2012.10.09 tomcat catalina.out 처리
- 2012.07.24 synchronized : 동기화(Lock)
- 2012.07.24 [Java] replaceAll 로 공백 제거하기
- 2012.07.24 Java && Excel 연동
Flex 3 SDK Downloads Enjoy/FLEX2012. 11. 28. 09:58
sdk 3 다운링크 페이지
http://sourceforge.net/adobe/flexsdk/wiki/Download%20Flex%203/
** 20170816 내용 수정 됨.
- 4.6.0.23201B
- 4.5.1.21328A
- 4.5.0.20967A
- 4.1.0.16076A
- 4.0.0.14159A
- 3.6.0.16995A
- 3.5.0.12683B
- 3.4.1.10084A
- 3.3.0.4852A
- 3.2.0.3958A
- 3.1.0.2710A
- 3.0.1.1732A
- 3.0.0.477A
# Flex 3 SDK Downloads Look [here](Downloads) for a description regarding the types of SDKs available. Look [here](Build%20Types) for an explanation of the different build types found on this page. Look [here](Using%20Flex%203%20Builds%20in%20Flex%20Builder) for an explanation of how to use a stable or nightly build in Flex Builder. **Please refer to [this document](Targeting%20Flash%20Player%2010%20Beta) if you wish to target the [Astro beta](http://labs.adobe.com/technologies/flashplayer10/).** ### Latest Milestone Release Builds Milestone|Build|Build Date|Adobe Flex SDK|Open Source Flex SDK|Adobe Add-ons| ---------|-----|----------|--------------|--------------------|-------------| 3.6A|3.6.0.16995A|Tue May 3, 2011|[Download (ZIP, 122MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.6.0.16995A&pkgtype=1) 3.5B|3.5.0.12683B|Fri Dec 18, 2009|[Download (ZIP, 122MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.5.0.12683B&pkgtype=1)|[Download (ZIP, 26MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.5.0.12683B&pkgtype=2)|[Download (ZIP, 65MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.5.0.12683B&pkgtype=3) 3.4A|3.4.0.9271A|Tue Aug 18, 2009|[Download (ZIP, 122MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.4.0.9271A%26amp%3Bpkgtype%3D1)|[Download (ZIP, 26MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.4.0.9271A&pkgtype=2)|[Download (ZIP, 65MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.4.0.9271A&pkgtype=3) 3.3A|3.3.0.4852A|Thu Feb 5, 2009|[Download (ZIP, 121MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.3.0.4852A&pkgtype=1)|[Download (ZIP, 24MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.3.0.4852A&pkgtype=2)|[Download (ZIP, 63MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.3.0.4852A&pkgtype=3) 3.2A|3.2.0.3958A|Wed Oct 29, 2008|[Download (ZIP, 118MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.2.0.3958A&pkgtype=1)|[Download (ZIP, 24MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.2.0.3958A&pkgtype=2)|[Download (ZIP, 63MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.2.0.3958A&pkgtype=3) 3.1A|3.1.0.2710A|Fri Aug 15, 2008|[Download (ZIP, 82MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.1.0.2710A&pkgtype=1)|[Download (ZIP, 23MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.1.0.2710A&pkgtype=2)|[Download (ZIP, 59MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.1.0.2710A&pkgtype=3) 3.0A|3.0.0.477A|Tue Feb 12, 2008|[Download (ZIP, 79MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.0.0.477A&pkgtype=1)|[Download (ZIP, 23MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.0.0.477A&pkgtype=2)|[Download (ZIP, 57MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.0.0.477A&pkgtype=3) ### Stable Builds Stable|Build|Build Date|Adobe Flex SDK|Open Source Flex SDK|Adobe Add-ons | ------|-----|----------|--------------|--------------------|--------------| 3.4.1A|3.4.1.10084A|Tue Nov, 2011|[Download (ZIP, 122MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.4.1.10084A&pkgtype=1) 3.0.1A|3.0.1.1732A|Tue Nov, 2011|[Download (ZIP, 122MB)](http://blogs.adobe.com/flex/files/2012/05/FlexLicense.swf?build=3.0.1.1732A&pkgtype=1)
3.0 빌더 링크가 있는 페이지 http://shon.yee.kr/39
Gallileo에서 Flex Builder 사용하기 Enjoy/FLEX2012. 11. 28. 09:57
출처 : http://blog.naver.com/zestun/60117466702 Gallileo에서 Flex Builder 사용하기 1. 우선 Ganymede를 설치하고 플렉스 빌더를 설치한다.
2. 갈릴레오를 깔고 갈릴레오가 설치된 폴더 안에 links 폴더를 없으면 만들어주고 다음의 파일을 넣어준다.
요 부분이 핵심인데, 실제 ProblemManager라는 클래스가 말썽인 모양이다. 그것만 이 제임스 와드란 친구의 클래스로 교체해주면 별 문제없이 빌드도 잘되고 실행도 잘된다는 결론. [출처] Gallileo에서 Flex Builder 사용하기|작성자 미랭군 |
OS별 CPU, memory, kernel bit 를 확인 방법 Enjoy/etc2012. 11. 23. 09:48
출처 : http://www.cubrid.com/zbxe/47077
- CPU 확인 방법
- AIX : lsdev -Cc processor
- HP-UX : ioscan -fnC processor
- Solaris : psrinfo -v
- LINUX : cat /proc/cpuinfo
- 메모리 확인 방법
- AIX : bootinfo -r
- HP-UX : grep -i Physical /var/adm/syslog/syslog.log
- Solaris : prtconf
- LINUX : free
- kernel bits 확인 방법
- AIX : bootinfo -K
- HP-UX : getconf KERNEL_BITS
- isainfo -kv
- LINUX : getconf WORD_BIT
시바타 준(柴田 淳) - 와스레 모노(忘れもの) Enjoy/자료실2012. 11. 8. 00:35
시바타 준(柴田 淳) - 와스레 모노(忘れもの)
시바타 준(柴田 淳)의
와스레 모노(忘れもの-잃어버린 것)라는 곡입니다.
이름:柴田淳(시바타 준)
생년원일:1976년11ㅇ월19일
출생지: 도쿄(東京都)
별자리: 전갈자리
2001년10월31일에, 1st Maxi Single 'ぼくの味方(나의 편)'으로 Dream music으로부터 메이저 데뷔
취미
수예전반, 독서, 아웃도어 캠프, 강낚시, 탐험, 바베큐, 드라이브, 영화&음악감상, 맛있는 것을 먹는 것.
특기
조각, 회화
좋아하는 책
치에코(智惠子)抄, 노인과 바다, 복숭아, 배틀로얄
좋아하는 영화
열쇠(이란 영화), 로렌조 오일, 아버지의 기도를, 반디불의 묘, 빽투더 퓨처,
블루스 브라더스
좋아하는 말
유언실행(有言実行)
좋아하는 음식물
마늘, 소프트 크림, 비프 저키(beef jerky)
팬 레터는 ▼
우편106-0032
도쿄도(東京都) 미나토구(港區) 롯폰기(六本木)6가1번24호
라피로스 록폰기(ラピロス 六本木) 4F
돌리뮤직(dolly music) 시바타 준(柴田淳) 팬 레터(fan letter)계
java out of memory 힙덤프 분석 Eclipse Memory Analyzer(MAT) Enjoy/JAVA2012. 10. 16. 13:21
출처 : http://cafe.naver.com/hermeneus/76
가이드 : http://wiki.eclipse.org/index.php/MemoryAnalyzer
자바 웹 개발자로서 듣기 가장 무서운 단어중에 하나는 out of memory 일 것이다.
tomcat catalina.out 처리 Enjoy/etc2012. 10. 9. 14:45
오래되면 catalina.out 로그파일 대용량이 된다~!
catalina.out 로그파일 쌓이는걸 막아야겠다~!
tomcat 로그는 catalina.out 대신 catalina.YYYY-MM-DD.log 파일을 보면 될듯...
수정하기
$TOMCAT_HOME/bin/catalina.sh
touch "$CATALINA_OUT"
if [ "$1" = "-security" ] ; then
if [ $have_tty -eq 1 ]; then
echo "Using Security Manager"
fi
shift
"$_RUNJAVA" "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start \
#>> "$CATALINA_OUT" 2>&1 & 주석처리
>> /dev/null 2>&1 & 라인추가
else
"$_RUNJAVA" "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start \
#>> "$CATALINA_OUT" 2>&1 & 주석처리
>> /dev/null 2>&1 & 라인추가
fi
위와 같이 처리 하면 catalina.out 파일 사이즈가 늘어나지 않는다~!
그외 방법들
펌 : http://tenny.egloos.com/1226439
우선, 톰켓 로그 설정법은
이런 곳 http://tomcat.apache.org/tomcat-5.5-doc/logging.html
그리고 또 이런 곳에 잘 나와있다. http://minaret.biz/tips/tomcatLogging.html
하지만, 이런 곳에는 http://tomcat.apache.org/faq/logging.html
톰켓은 기본적으로 catalina.out 파일을 rotate하지 않는다고 한다.
톰켓 입장에서는 당신이 로깅패키지를 쓰면 되기 때문에 문제가 없다고 하는데,,, 글쎄다...
어떻게든 로그가 계속 쌓이는 것은 막아야하지 않겠는가... ( 정말 쉬운 방법이 있으면 가르침을 주시면 참 고마울 것 같다)
System.out
and System.err
both print to catalina.out. But you can suppress this via the swallowOutput property and sent to different log files. catalina.out does not rotate. But it should not be an issue because nothing should be printing to standard output since you are using a logging package, right? a thread about rotation of catalina.out
방법1. cronolog 로테이트 로깅 프로그램 사용
http://marc.info/?l=tomcat-user&m=105645816302666&w=2
방법2. log4j 사용
http://minaret.biz/tips/tomcatLogging.html
첫 번째 방법은 패키지 설치가 귀찮아서 안해봤고, 두 번째 방법을 해보니, 로깅은 되는데, catalina.out은 계속 쌓이는 듯 하다. 뭔가 설정을 잘못한 것일 수도 있지만, 분석을 해봐도 뜻대로 catalina.out에 로깅이 중단되지는 않았다.
해보지는 않았지만, pipe 처리를 해서 rotate를 완전 다른 프로세스에게 넘기는 첫번째 방법이 더 쉬워보이기는 한다. 하지만 이 역시, 톰켓을 kill할 때, 가끔 cronolog가 혼자 살아있다는 bug report 가 있기는 하다.
이제 귀찮고 해서, shell script를 만들고 crontab에 넣어 버렸더니, 잘되기는 한다.
rotateTomcatLog.sh
#!/bin/sh
LOG_DIR=/tomcat/log/dir
DATE=`/bin/date +%Y-%m-%d`
/bin/nice /bin/cp $LOG_DIR/catalina.out $LOG_DIR/catalina.$DATE.out
/bin/nice /bin/cat /dev/null > $LOG_DIR/catalina.out
rm -Rf $LOG_DIR/*.log
#
# delete out-of-date catalina.log
#
DELETE_DATE=`/bin/date +%Y-%m-%d --date '20 day ago'`
#DELETE_DATE`/bin/date +Y-%m-%d --date '1 month ago'`
echo "$LOG_DIR/catalina.$DELETE_DATE.out"
for file in $LOG_DIR/*
do
if [[ "$file" < "$LOG_DIR/catalina.$DELETE_DATE.out" ]]
then
rm -f $file
fi
done
# end of file
위 스크립트는 cataline.out 하루에 한 번씩 rotate하고, backup 파일은 20일 동안 보관한다.
뭐 취향에 맞게 바꿔써도 무방할 것 같지만, 괜하게 log를 copy하는 부하가 맘에 걸린다.
/etc/logrotate.d/ 밑의 설정처럼 rotate도 하면서 backup 파일 보관 기간까지 설정하면서,
날짜와 크기 제한까지 같이 두는 설정이 있으면 좋겠다.
(log4j는 날짜로 로테이트하면서, 크기 제한까지 두지는 못하는 것 같다.)
synchronized : 동기화(Lock) Enjoy/JAVA2012. 7. 24. 09:40
출처 : http://blog.naver.com/sang_it/156495940
package com.thread;
/*
* 동기화 : 쓰레드 Lock걸기,Synchronized를 걸면 동시 접속이 안된다
하나의 자원(데이터)에 대해서 여러 스레드가 사용하려고 할때
한 시점에서 하나의 스레드만 사용할 수 있도록 하는 것이다.
synchronized 식별자는 보통 메소드의 선언부에 쓰고
이 키워드가 붙은 메소드는 한번에 하나의 스레드만 접근이 가능하며
메소드가 사용중일 때 다른 스레드가 메소드를 호출하면 앞의 스레드가 종료될때까지 기다려야 한다.
*/
class ATM implements Runnable{
private long depositeMoney = 10000;
@Override
public void run() {
synchronized (this) {
for(int i=0; i<10 ; i++){
try{
Thread.sleep(100);
}catch (Exception e) {
e.printStackTrace();
}
//현재 디파짓을 반환
if(getDepositMoney() <=0)
break;
whithDraw(100);
}
}
}
private void whithDraw(int i) {
if(0< depositeMoney)
depositeMoney -= i;
System.out.println(Thread.currentThread().getName()+ ","+depositeMoney);
}
private long getDepositMoney() {
return depositeMoney;
}
}
public class SynchronizedTest {
public static void main(String[] args) {
ATM atm = new ATM();
Thread t1 = new Thread(atm,"First");
t1.start();
Thread t2 = new Thread(atm,"Second");
t2.start();
}
}
==========결과 ====================
First,9900
First,9800
First,9700
First,9600
First,9500
First,9400
First,9300
First,9200
First,9100
First,9000
Second,8900
Second,8800
Second,8700
Second,8600
Second,8500
Second,8400
Second,8300
Second,8200
Second,8100
Second,8000
****첫번째로 들어온 쓰레드가 끝나면 다음 쓰레드 실행
[출처] synchronized : 동기화(Lock)|작성자 sang_it
[Java] replaceAll 로 공백 제거하기 Enjoy/JAVA2012. 7. 24. 09:34
출처 : http://vicki.tistory.com/583
정규식에서 공백은 정확하게 공백으로 인식을 못하는 것 같았습니다.
Pattern JavaDoc 에서 내용을 확인하였습니다.
http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html
POSIX character classes (US-ASCII only) | |
---|---|
\p{Lower} | A lower-case alphabetic character: [a-z] |
\p{Upper} | An upper-case alphabetic character:[A-Z] |
\p{ASCII} | All ASCII:[\x00-\x7F] |
\p{Alpha} | An alphabetic character:[\p{Lower}\p{Upper}] |
\p{Digit} | A decimal digit: [0-9] |
\p{Alnum} | An alphanumeric character:[\p{Alpha}\p{Digit}] |
\p{Punct} | Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ |
\p{Graph} | A visible character: [\p{Alnum}\p{Punct}] |
\p{Print} | A printable character: [\p{Graph}\x20] |
\p{Blank} | A space or a tab: [ \t] |
\p{Cntrl} | A control character: [\x00-\x1F\x7F] |
\p{XDigit} | A hexadecimal digit: [0-9a-fA-F] |
\p{Space} | A whitespace character: [ \t\n\x0B\f\r] |
그래서 아래와 같이 수정하였습니다.
- String str = "Vicki Yi";
- System.out.println(str + " : " + str.replaceAll("\\p{Space}", ""));
1.
String str =
"Vicki Yi"
;
2.
3.
System.out.println(str +
" : "
+ str.replaceAll(
"\\p{Space}"
,
""
));
결과는~~~ 원하는 결과가 나왔습니다.
Java && Excel 연동 Enjoy/JAVA2012. 7. 24. 09:30
출처 : http://dualist.tistory.com/151
참조 : http://www.javapattern.info/
자바로 엑셀을 핸들링 할 수 있는 방법은 크게 두가지로 나누어 진다.
1. Java Excel API
참조 : http://jexcelapi.sourceforge.net/
2. POI
참조 : http://jakarta.apache.org/poi/index.html
흔히 POI를 엑셀을 핸들링 하기 위한 것으로만 오해하기 쉬운데,
POI 프로젝트는 마이크로소프트 OLE 2 복합도큐먼트포맷형식의 파일을 순수 자바를 이용하여 핸들링하는 APIs로 구성되어있다.
OLE 2 복합도큐먼트포맷형식의 파일은 마이크로소프트 엑셀 혹은 워드파일 등의 대부분의 오피스파일들을 나타낸다.
일반적으로 엑셀에 대한 핸들링만을 수행할 때에는 Jxl을 권장한다.
엑셀을 핸들링 할 때 엑셀에서 가장 작은 단위는 알고 있듯이 "셀"이다.
모든 작업은 이 셀을 중심으로 이루어진다.
주의할 점)
1) 엑셀 쉬트상에 "C15"라는 셀에 데이터가 있다고 가정하자.( 15행 C열을 나타낸다.)
이 때 Jxl에서는 A1( 1행 A열)부터 C15까지는 실제 데이터가 없을 경우에라도 null이 아닌 빈데이터가 있다고 인식한다.
즉 D열 이상이나, 16행 이상을 접근 할 때에 null로 인식한다.
하지만 POI에서는 C15 이내에 있다 하더라도 실제 데이터가 없을 때에는 null로 인식한다.
2) Jxl에서는 각 셀의 데이터 타입을 실제 엑셀 파일에서 지정된 셀의 타입을 따르고,
POI에서는 셀의 실제 데이터 형을 따른다.
예를 들어 특정 셀의 타입을 text 로 잡아놓고, 데이터를 1234로 입력하면
Jxl에서는 "12345"로 인식하고, POI에서는 12345.00 이런식으로 인식한다.
EX ) Java Excel API를 이용한 Excel 읽기
import jxl.*;
// .. 중간생략
Workbook workbook = null;
Sheet sheet = null;
Cell cell = null;
try
{
//엑셀파일을 인식
workbook = Workbook.getWorkbook( new File( szFileName));
//엑셀파일에 포함된 sheet의 배열을 리턴한다.
//workbook.getSheets();
if( workbook != null)
{
//엑셀파일에서 첫번째 Sheet를 인식
sheet = workbook.getSheet(0);
if( sheet != null)
{
//셀인식 Cell a1 = sheet.getCell( 컬럼 Index, 열 Index);
//셀 내용 String stringa1 = a1.getContents();
//기록물철의 경우 실제 데이터가 시작되는 Row지정
int nRowStartIndex = 5;
//기록물철의 경우 실제 데이터가 끝 Row지정
int nRowEndIndex = sheet.getColumn( 2).length - 1;
//기록물철의 경우 실제 데이터가 시작되는 Column지정
int nColumnStartIndex = 2;
//기록물철의 경우 실제 데이터가 끝나는 Column지정
int nColumnEndIndex = sheet.getRow( 2).length - 1;
String szValue = "";
for( int nRow = nRowStartIndex; nRow <= nRowEndIndex; nRow++ )
{
for( int nColumn = nColumnStartIndex; nColumn <= nColumnEndIndex ; nColumn++)
{
szValue = sheet.getCell( nColumn, nRow).getContents();
System.out.print( szValue);
System.out.print( "\t" );
}
System.out.println();
}
}
else
{
System.out.println( "Sheet is null!!" );
}
}
else
{
System.out.println( "WorkBook is null!!" );
}
}
catch( Exception e)
{
e.printStackTrace();
}
finally
{
if( workbook != null)
{
workbook.close();
}
}
EX ) POI를 이용한 Excel 파일 읽기
import org.apache.poi.hssf.usermodel.*;
// .. 중간 생략
HSSFWorkbook workbook = null;
HSSFSheet sheet = null;
HSSFRow row = null;
HSSFCell cell = null;
try
{
workbook = new HSSFWorkbook( new FileInputStream( new File( szFileName)));
if( workbook != null)
{
sheet = workbook.getSheetAt( 0);
if( sheet != null)
{
//기록물철의 경우 실제 데이터가 시작되는 Row지정
int nRowStartIndex = 5;
//기록물철의 경우 실제 데이터가 끝 Row지정
int nRowEndIndex = sheet.getLastRowNum();
//기록물철의 경우 실제 데이터가 시작되는 Column지정
int nColumnStartIndex = 2;
//기록물철의 경우 실제 데이터가 끝나는 Column지정
int nColumnEndIndex = sheet.getRow( 2).getLastCellNum();
String szValue = "";
for( int i = nRowStartIndex; i <= nRowEndIndex ; i++)
{
row = sheet.getRow( i);
for( int nColumn = nColumnStartIndex; nColumn <= nColumnEndIndex ; nColumn++)
{
cell = row.getCell(( short ) nColumn);
if( cell == null)
{
continue;
}
if( cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
{
szValue = String.valueOf( cell.getNumericCellValue());
}
else
{
szValue = cell.getStringCellValue();
}
System.out.print( szValue);
System.out.print( "\t" );
}
System.out.println();
}
}
else
{
System.out.println( "Sheet is null!!" );
}
}
else
{
System.out.println( "WorkBook is null!!" );
}
}catch(Exception e){
e.printStackTrace();
}
EX ) Jxl을 이용하여 Excel에 데이터 저장하기
import jxl.*;
// .. 중간생략
WritableWorkbook workbook = null;
WritableSheet sheet = null;
File excelFile = new File( szFileName);
Label label = null;
long start = 0;
long end = 0;
try
{
for(int i = 0 ; i < 10; i++)
{
workbook = Workbook.createWorkbook( excelFile);
workbook.createSheet("sheet1", 0);
sheet = workbook.getSheet(0);
for( int j = 0; j < 10000; j++){
label = new Label( j, 0, "test cell");
sheet.addCell( label);
}
kidsbook.write();
kidsbook.close();
}
}
catch( Exception e)
{
}
// .. 중간생략
EX ) POI를 이용한 브라우저에서 Excel에 데이터 저장하여 보여주기
import org.apache.poi.hssf.usermodel.*;
// ... 생략
public void writeStream( PTSEvaluation[] arrPTSEvaluation) throws Exception
{
try
{
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet( "new sheet");
HSSFRow row = null;
HSSFCell cell = null;
HSSFCellStyle style = null;
ServletOutputStream excelOut = ServiceContext.getResponse().getOutputStream();
ServiceContext.getResponse().setHeader( "Content-Disposition", "attachment;filename=EvaluationCompensationList.xls");
ServiceContext.getResponse().setContentType( MimeType.getMimeType( "xls"));
//로우 생성
row = sheet.createRow( ( short)0);
row.setHeightInPoints( 30);
//셀에 적용한 스타일을 생성한다.
style = PTSUtil.setExcelHeaderStyle( wb);
// 셀 생성
cell = row.createCell( (short)0);
//한글 처리
cell.setEncoding( HSSFCell.ENCODING_UTF_16);
//셀에 데이터 입력하기
cell.setCellValue( "값");
//셀에 스타일 적용하기
cell.setCellStyle(style);
//.. 중간생략 ( 이런 방식으로 로우와 셀을 증가 시키면서 작업을 수행하면 된다.
wb.write( excelOut);
excelOut.flush();
}
catch( Exception e)
{
e.printStackTrace();
throw e;
}
finally
{
ServiceContext.getResponse().getOutputStream().close();
}
}
// ... 생략
출처 : Tong - 퀴비님의 자바통