Ynns

Excel outputstream 엑셀 파일로 데이터 저장, 쓰기 본문

JAVA

Excel outputstream 엑셀 파일로 데이터 저장, 쓰기

yunassnn 2021. 6. 5. 13:37

sql 사용하지 않고 미니 프로젝트로 영화 예매 시스템을 구현하고 싶은데 DB 없이 만들 수가 없음

그냥 쓰고 싶다 제발......

그래서 DB처럼 사용할 엑셀 파일을 만드려고 시도

입력은 가능한데 이제 수정이랑 삭제가 되는지 이걸 어떻게 3일만에 하는지 나는 모르겠다

엑셀 파일로 출력된 데이터

엑셀...... spring이나 maven 변환 없이 그냥 쓰는 방법을 뒤져봤지만 안 나왔다... 결국 먼저 maven 프로젝트로 바꿔줘야 한다

-> 바꾸는 방법 쉬움 

프로젝트에서  Configure > Convert to Maven Project 

Group Id, Artifact Id, Version, Packaging 방법, Name 등 설정

 

pom.xml 에서 엑셀 입출력을 위한 dependency 추가해야 됨

----------------------------------------------------------------------
<groupId>com.work</groupId>
<artifactId>movie_theaters</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>movie_theater</name>
<packaging>jar</packaging>
  ----------------------------------------------------------------------
<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
----------------------------------------------------------------------
<dependencies>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>3.8.1</version>
		<scope>test</scope>
	</dependency>
	<dependency>
		<groupId>org.apache.poi</groupId>
		<artifactId>poi</artifactId>
		<version>4.1.1</version>
	</dependency>
	<dependency>
		<groupId>org.apache.poi</groupId>
		<artifactId>poi-ooxml</artifactId>
		<version>4.1.1</version>
	</dependency>
</dependencies>
----------------------------------------------------------------------
    
    

 

Member.java는 알아서 작성, 아래는 createExcel 코드이다

package com.work.excel;

import java.io.FileOutputStream;
import java.util.ArrayList;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import com.work.model.dto.Member;

/**
 * 데이터 엑셀 파일 생성 클래스
 * @author yunassnn
 *
 */
public class createExcel {
	public static void main(String[] args) {
		try {
			// .xlsx 파일 생성
			XSSFWorkbook xworkbook = new XSSFWorkbook();
			// sheet 생성
			Sheet sheet = xworkbook.createSheet("Invoicessss");
			// Create top row column head 생성
			String[] columnHeadings = { "회원 ID", "회원 PW", "이름", "Mobile", "생년월일", "가입일", "등급", "마일리지" };
			// bold with a foreground color 지정
			Font headerFont = xworkbook.createFont();
			headerFont.setBold(true);
			headerFont.setFontHeightInPoints((short) 12);
			headerFont.setColor(IndexedColors.BLACK.index);
			// CellStyle with the font 지정
			CellStyle headerStyle = xworkbook.createCellStyle();
			headerStyle.setFont(headerFont);
			headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
			headerStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.index);
			// Create the header row
			Row headerRow = sheet.createRow(0);
			// Iterate over the column headings to create columns
			for (int i = 0; i < columnHeadings.length; i++) {
				Cell cell = headerRow.createCell(i);
				cell.setCellValue(columnHeadings[i]);
				cell.setCellStyle(headerStyle);
			}
			// Header Row 고정
			sheet.createFreezePane(0, 1);
			// Fill data 
			ArrayList<Member> a = createData();
			CreationHelper creationHelper = xworkbook.getCreationHelper();
			CellStyle dateStyle = xworkbook.createCellStyle();

			int rownum = 1;
			for (Member i : a) {
				Row row = sheet.createRow(rownum++);
				row.createCell(0).setCellValue(i.getMemberId());
				row.createCell(1).setCellValue(i.getMemberPw());
				row.createCell(2).setCellValue(i.getName());
				row.createCell(3).setCellValue(i.getMobile());
				row.createCell(4).setCellValue(i.getBirth());
				row.createCell(5).setCellValue(i.getEntryDate());
				row.createCell(6).setCellValue(i.getGrade());
				row.createCell(7).setCellValue(i.getMileage());
			}
			
			// Group and collapse rows
			int noOfRows = sheet.getLastRowNum();
			sheet.groupRow(1, noOfRows);
			sheet.setRowGroupCollapsed(1, true);
			
			// Autosize columns
			for (int i = 0; i < columnHeadings.length; i++) {
				sheet.autoSizeColumn(i);
			}
			Sheet sheet2 = xworkbook.createSheet("Second");
			// Write the output to file 저장되는 경로
			FileOutputStream fileOut = new FileOutputStream("C:\\practice\\git\\TheaterReservation\\movie_theaters\\docs\\memberL.xlsx");
			xworkbook.write(fileOut);
			fileOut.close();
			xworkbook.close();
			System.out.println("Completed");
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	/**
	 * excel에 담을 Member 형식의 데이터 
	 * @return dto
	 */
	private static ArrayList<Member> createData() {
		ArrayList<Member> dto = new ArrayList();
		dto.add(new Member("member1", "membe11", "immember1", "01010001000", "210517", "2021-05-17", "G", "1200"));
		dto.add(new Member("member2", "membe22", "immember2", "01020002000", "210518"));
		dto.add(new Member("member3", "membe33", "immember3", "01030003000", "210519"));
		dto.add(new Member("admin1", "admin11", "imadmin1", "01030004000", "210604", "2021-06-04", "A", ""));
		
		return dto;
	}

}
Comments