반응형
Java에서 엑셀 업로드 기능을 구현하려면 Apache POI 라이브러리를 사용할 수 있습니다. POI는 Microsoft Office 파일 형식 (예: XLSX, XLS)을 조작하기 위한 Java 라이브러리입니다. 다음은 POI를 사용하여 Java에서 엑셀 업로드 기능을 구현하는 방법입니다.
0. POI 라이브러리를 다운로드하고 프로젝트에 추가합니다. POI는 Maven 또는 Gradle과 같은 의존성 관리 도구를 사용하여 프로젝트에 추가할 수 있습니다.
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
- 위 의존성은 POI 라이브러리의 메인 모듈인
poi
를 추가하는 것입니다. 만약 필요한 경우, 추가적인 모듈도 의존성에 추가할 수 있습니다. 예를 들어,.xlsx
파일을 처리하기 위해서는poi-ooxml
모듈도 추가해야 합니다.
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
- 의존성을 추가하고 나면, Maven이 라이브러리를 자동으로 다운로드하여 프로젝트에서 사용할 수 있게 됩니다.
1. Model: 데이터를 처리하는 클래스를 정의합니다.
public class ExcelData {
private String name;
private int age;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
2. View: 사용자 인터페이스를 구성합니다. 엑셀 파일을 선택할 수 있는 폼을 만듭니다.
<form method="post" action="uploadExcel" enctype="multipart/form-data">
<input type="file" name="excelFile"/>
<input type="submit" value="Upload"/>
</form>
3. Controller: 데이터를 가져오고, 처리한 후, 결과를 반환합니다.
@Controller
public class ExcelUploadController {
@RequestMapping(value="/uploadExcel", method=RequestMethod.POST)
public ModelAndView uploadExcel(@RequestParam("excelFile") MultipartFile multipartFile) throws IOException {
List<ExcelData> dataList = new ArrayList<ExcelData>();
ModelAndView mav = new ModelAndView();
try {
XSSFWorkbook workbook = new XSSFWorkbook(multipartFile.getInputStream());
XSSFSheet sheet = workbook.getSheetAt(0);
for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {
XSSFRow row = sheet.getRow(i);
ExcelData data = new ExcelData();
data.setName(row.getCell(0).getStringCellValue());
data.setAge((int) row.getCell(1).getNumericCellValue());
data.setEmail(row.getCell(2).getStringCellValue());
dataList.add(data);
}
mav.addObject("dataList", dataList);
mav.setViewName("excelResult");
} catch (IOException e) {
e.printStackTrace();
}
return mav;
}
}
- 위 코드에서는
uploadExcel
메소드를 정의하여MultipartFile
타입의 엑셀 파일을 전달받습니다. 그리고 POI 라이브러리를 사용하여 엑셀 파일을 처리하고, 데이터를ExcelData
클래스 객체에 저장합니다. 이후ModelAndView
를 통해 결과 페이지에 전달될 데이터를 설정하고, 결과 페이지 이름을 설정합니다.
4. 결과 페이지: 결과를 출력할 JSP 페이지를 생성합니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Excel Upload Result</title>
</head>
<body>
<table>
<tr>
<th>Name</th>
<th>Age</th>
<th>Email</th>
</tr>
<c:forEach var="data" items="${dataList}">
<tr>
<td>${data.name}</td>
<td>${data.age}</td>
<td>${data.email}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
- 위 코드에서는
dataList
에 저장된 데이터를 출력하기 위해c:forEach
태그를 사용합니다. - 이렇게 구현된 코드를 실행하면, 사용자는 웹 페이지에서 엑셀 파일을 선택하고 업로드한 후, 처리된 데이터를 출력하는 페이지를 볼 수 있습니다.
- 이 예제에서는 Spring MVC를 사용하여 MVC 패턴을 구현하였습니다. Spring MVC를 사용하지 않는 경우, Servlet과 JSP를 사용하여 구현할 수도 있습니다.
반응형
'Java' 카테고리의 다른 글
[JAVA]빌드(Build), 컴파일(Compile), 및 실행(Run) 이해하기 (0) | 2024.03.03 |
---|---|
[JAVA] serialVersionUID 사용 이유와 예시 (0) | 2024.02.28 |
Spring boot maven project 만들기 (0) | 2023.02.14 |
[JAVA] 파일 다운 시 한글 이름 깨짐 현상 (0) | 2023.01.05 |
[JAVA] Spring Annotation @MapperScan이란? (0) | 2022.08.17 |