🌱 개발 λ…ΈνŠΈ

[개발 λ…ΈνŠΈ] μ—‘μ…€ λ‹€μš΄λ‘œλ“œ κΈ°λŠ₯ κ΅¬ν˜„μ„ μœ„ν•œ Workbook 3μ’… 비ꡐ

OR15A 2024. 7. 3. 16:59
  • μ‹ μž…κ΅μœ‘μš© ν”„λ‘œμ νŠΈμ— μ°Έμ—¬ν•˜λ©΄μ„œ μ—‘μ…€ λ‹€μš΄λ‘œλ“œ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κ²Œ λ˜μ—ˆλ‹€
  • λ‚΄κ°€ μ°Ύμ•˜λ˜ λͺ©λ‘ 데이터λ₯Ό μ—‘μ…€ λ‹€μš΄λ‘œλ“œ ν•  수 μžˆλ„λ‘ κ΅¬ν˜„ν•˜λŠ” 방법은 3κ°€μ§€

 

 μ—‘μ…€ λ‹€μš΄λ‘œλ“œ ν•  수 μžˆλ„λ‘ κ΅¬ν˜„ν•˜λŠ” 방법
  • πŸ“— Workbook μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 클래슀
    • Apache POI 라이브러리λ₯Ό μ‚¬μš©ν•˜λŠ” 방법
    • πŸ‘πŸ»μž₯점
      • 고객이 μ›ν•˜λŠ” λ°μ½”λ ˆμ΄μ…˜ 및 포맷을 자유둭게 μ„€μ •ν•  수 있음
      • λ‹€μ–‘ν•œ μ—‘μ…€ κΈ°λŠ₯을 지원함(μ„œμ‹, 차트 생성 λ“±)
    • πŸ‘ŽπŸ»λ‹¨μ 
      • μƒλŒ€μ μœΌλ‘œ κ΅¬ν˜„μ΄ λ³΅μž‘ν•¨
      • 특히 XSSFWorkbook의 경우 λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ΄ 많음
  • πŸ“—  List 데이터 λΆ€λΆ„λ§Œ λ”°λ‘œ μ—‘μ…€μš© JSP둜 λ°˜ν™˜
    • μ„œλΈ”λ¦Ώμ„ μ΄μš©ν•˜μ—¬ JSPμ—μ„œ μ—‘μ…€ 데이터λ₯Ό μƒμ„±ν•˜λŠ” 방법
    • πŸ‘πŸ»μž₯점
      • λ‹¨μˆœν•œ 데이터 λ‹€μš΄λ‘œλ“œλ₯Ό μ‰½κ²Œ κ΅¬ν˜„ν•  수 있음
      • 헀더λ₯Ό xls νƒ€μž…μœΌλ‘œ μ„€μ •ν•΄μ„œ λΈŒλΌμš°μ €μ—μ„œ 직접 λ‹€μš΄λ‘œλ“œ κ°€λŠ₯ν•΄μ„œ μ²˜λ¦¬κ°€ 빠름
    • πŸ‘ŽπŸ»λ‹¨μ 
      • λ³΅μž‘ν•œ μ—‘μ…€ κΈ°λŠ₯ κ΅¬ν˜„μ΄ 어렀움, ν¬λ§·νŒ…μ΄ μ œν•œμ μž„
      • μ—‘μ…€ 결과물이 μ‹¬λ―Έμ μœΌλ‘œ 뢀쑱함
  • πŸ“—  Sheet.jsλ₯Ό 이용
    • JavaScript 라이브러리인 Sheet.jsλ₯Ό μ‚¬μš©ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ μ—‘μ…€ νŒŒμΌμ„ μƒμ„±ν•˜λŠ” 방법
    • πŸ‘πŸ»μž₯점
      • μ‚¬μš©μ΄ 맀우 κ°„νŽΈν•¨
      • ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ μ—‘μ…€ νŒŒμΌμ„ λ°”λ‘œ 생성할 수 있음
      • μ˜€ν”ˆμ†ŒμŠ€ μ΄λ―€λ‘œ 무료둜 μ‚¬μš© κ°€λŠ₯ν•˜κ³ , λ‹€μ–‘ν•œ κΈ°λŠ₯을 지원함
    • πŸ‘ŽπŸ»λ‹¨μ 
      • ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ μ‹€ν–‰λ˜λ―€λ‘œ λΈŒλΌμš°μ € ν™˜κ²½μ— 따라 λ‹€λ₯Ό 수 있음
      • ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ 파일 μƒμ„±ν•˜λ―€λ‘œ 데이터 λ³΄μ•ˆμ— μ£Όμ˜ν•΄μ•Όν•¨

 

 

  • κ°€μž₯ κ΅¬ν˜„ν•˜κΈ° μ‰¬μ› λ˜ μˆœμ„œλŒ€λ‘œ 3κ°€μ§€ 방법을 λͺ¨λ‘ κ΅¬ν˜„ν•΄λ³΄κ³ ( Sheet.js → JSP   Workbook ) νŒ€ μ„ λ°°λ‹˜κ»˜ μžλ¬Έμ„ κ΅¬ν–ˆλ‹€
  • λ‹€μ–‘ν•œ μ—‘μ…€ κΈ°λŠ₯을 지원할 수 μžˆλŠ” μœ μ—°μ„± λ•Œλ¬Έμ— Workbook 방법을 κΆŒμœ ν•΄μ£Όμ…¨κ³  λ”λΆˆμ–΄ Workbook의 3가지에 λŒ€ν•΄ μ•Œμ•„μ˜€λΌλŠ” 과제λ₯Ό λ‚΄μ£Όμ…¨λ‹€.

 

 

Apache POI 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ μ—‘μ…€ νŒŒμΌμ„ μƒμ„±ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” μ£Όμš” μ›Œν¬λΆ 클래슀
  • πŸ“Š HSSFWorkbook
    • Excel 97-2007 (.xls) ν˜•μ‹μ˜ νŒŒμΌμ„ μƒμ„±ν•˜κ±°λ‚˜ μˆ˜μ •ν•  λ•Œ μ‚¬μš©ν•¨
    • πŸ‘πŸ»μž₯점
      • κ°€λ²Όμš΄ λ©”λͺ¨λ¦¬ μ‚¬μš©, 비ꡐ적 λΉ λ₯Έ μ²˜λ¦¬μ†λ„
    • πŸ‘ŽπŸ»λ‹¨μ 
      • μ΅œλŒ€ 65,536ν–‰κ³Ό 256μ—΄λ‘œ μ œν•¨
      • μ΅œμ‹  Excel ν˜•μ‹(.xlsx) 지원 λΆˆκ°€λŠ₯
  • πŸ“Š  XSSFWorkbook
    • Excel 2007 이상 (.xlsx) ν˜•μ‹μ˜ νŒŒμΌμ„ μƒμ„±ν•˜κ±°λ‚˜ μˆ˜μ •ν•  λ•Œ μ‚¬μš©ν•¨
    • μžλ°”κΈ°μ€€ Read,Write κ°€λŠ₯
    • πŸ‘πŸ»μž₯점
      • μ΅œμ‹  Excel κΈ°λŠ₯을 λͺ¨λ‘ μ§€μ›ν•˜λ©°, ν–‰κ³Ό μ—΄μ˜ μ œν•œμ΄ μ—†κ±°λ‚˜ 맀우 금
    • πŸ‘ŽπŸ»λ‹¨μ 
      • λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ΄ HSSFWorkbook보닀 λ†’μœΌλ©°, λŒ€μš©λŸ‰ 데이터 μ²˜λ¦¬μ— λΉ„νš¨μœ¨μ 
  • πŸ“Š  SXSSFWorkbook βœ…
    • SXSSFλŠ” λŒ€μš©λŸ‰ Excel 파일(.xlsx)을 생성할 λ•Œ λ©”λͺ¨λ¦¬ μ‚¬μš©μ„ μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•΄ 슀트리밍 λ°©μ‹μœΌλ‘œ 데이터λ₯Ό μ“°λŠ” 데 μ‚¬μš©ν•¨
    • μžλ°”κΈ°μ€€ Write κ°€λŠ₯
    • πŸ‘πŸ»μž₯점
      • λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ„ 크게 쀄이며, λŒ€μš©λŸ‰ 데이터 μ²˜λ¦¬μ— 맀우 효율적
    • πŸ‘ŽπŸ»λ‹¨μ 
      • 이미 μ“΄ λ°μ΄ν„°λŠ” λ‹€μ‹œ 읽을 수 μ—†κ³ , λ©”λͺ¨λ¦¬ λ‚΄μ—μ„œ μˆ˜μ •ν•  수 μ—†μŒ
  •  

 

 

XSSFWorkbookκ³Ό SXSSFWorkbook 비ꡐ 
  πŸ“Š  XSSFWorkbook πŸ“Š  SXSSFWorkbook
생성 방식 파일 생성 μ „κΉŒμ§€ λͺ¨λ“  rowλ₯Ό λ©”λͺ¨λ¦¬μ— 올림 μ§€μ •ν•œ row 만큼의 λ°μ΄ν„°λ§Œ λ©”λͺ¨λ¦¬μ— 올리고,
μ΄ˆκ³Όμ‹œ 이전 데이터λ₯Ό λ””μŠ€ν¬μ— μž„μ‹œνŒŒμΌλ‘œ μ €μž₯ν•˜μ—¬ λ©”λͺ¨λ¦¬λ₯Ό 비움
μžλ°” μ½”λ“œμ—μ„œ Read, Write κ°€λŠ₯ Write κ°€λŠ₯
(이전 λ°μ΄ν„°λŠ” λ””μŠ€ν¬λ‘œ μ΄λ™ν•˜λ―€λ‘œ Read λΆˆκ°€λŠ₯)
OOM
(Out of Memory)
OOM κ°€λŠ₯성이 μžˆμ–΄μ„œ μœ„ν—˜ν•¨ OOM에 μ•ˆμ „ν•¨
주의점 데이터 처리 μ „ λ©”λͺ¨λ¦¬ μš”κ΅¬λŸ‰ 평가가 μ„ ν–‰λ˜μ–΄μ•Ό 함 ν•„μš”ν•œ 데이터λ₯Ό 순차적으둜 μ€€λΉ„ν•΄μ•Ό 함
μ—‘μ…€ κΈ°λŠ₯ μ—‘μ…€ 데이터 양이 적고, λ³΅μž‘ν•œ μ„œμ‹μ΄λ‚˜ 차트 같은 κ³ κΈ‰ κΈ°λŠ₯이 ν•„μš”ν•  λ•Œ μ‚¬μš©ν•¨ μ—‘μ…€μ˜ 차트 같은 κΈ°λŠ₯은 μ‚¬μš© λΆˆκ°€λŠ₯함
μ„±λŠ₯ μž‘μ€ 데이터셋에 적합 λŒ€μš©λŸ‰ 데이터에 적합
μ‚¬μš© 사둀 λ³΄κ³ μ„œ, 뢄석 자료 λ“± λŒ€κ·œλͺ¨ 둜그 파일, λŒ€λŸ‰ 데이터 처리
μ΅œμ’… 채택방법   βœ