Spring Mvc 기반 Excel 파일 업로드 다운로드 예
기본 프레임
이전에 가장 간단한spring mvc 프로젝트를 어떻게 구축하는지 소개한 적이 있다컨베이어 여기 있어요. .
이번에는 이 프로젝트를 바탕으로 업로드 다운로드의 작은 예를 계속 실현한다.다음 작업을 수행해야 합니다.
1 인덱스를 추가합니다.html,form 제출 파일 추가
2commons-fileupload,commons-io,jxl 등 도구 패키지 도입
3 업로드 다운로드 인터페이스 만들기
4 multipartResolver bean 주입
5 업로드에서 HttpServletRequest를 사용하여 파일 흐름을 가져와 WorkBook을 통해 확인
6 다운로드에서 HttpServerResponse를 통해 파일 흐름으로 돌아가 다운로드 가능
페이지
페이지는 매우 간단하지만 사실은form 탭입니다. 주의해야 할 것은 다음과 같습니다.
<form role="form" action="/upload" method="POST" enctype="multipart/form-data">
<div class="form-group">
<label for="file"> </label>
<input type="file" id="file" name="file">
</div>
<button type="submit" class="btn btn-default"> </button>
</form>
commons-fileupload, jxl 등 도구 패키지 도입관련된 jar 패키지는 다음과 같습니다.
<!-- springframework begins -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0-b01</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/jexcelapi/jxl -->
<dependency>
<groupId>jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6</version>
</dependency>
Xml 구성웹에서xml에서 기본 접근 페이지를 설정해야 합니다. 이전에 차단을 설정한 요청은/이기 때문에 모든 정적 페이지를 설정하지 않으면 차단됩니다.
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
스프링의 프로필에 CommonsMultipartResolver의 bean을 추가합니다.
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- set the max upload size100MB -->
<property name="maxUploadSize">
<value>104857600</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>
업로드 코드
@RequestMapping("upload")
public void upload(HttpServletRequest request, HttpServletResponse response) throws IOException, BiffException, WriteException {
MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
MultipartFile file = mRequest.getFile("file");
Workbook workbook = Workbook.getWorkbook(file.getInputStream());
// Sheet
Arrays.stream(workbook.getSheets())
.forEach(sheet -> {
int size = sheet.getRows();
for(int i=0; i<size; i++){
// ,
Arrays.stream(sheet.getRow(i)).forEach(cell -> System.out.println(cell.getContents().equals("")?' ':cell.getContents()));
}
});
response.setHeader("Content-Disposition", "attachment; filename=return.xls");
WritableWorkbook writableWorkbook = ExcelUtils.createTemplate(response.getOutputStream());
writableWorkbook.write();
writableWorkbook.close();
}
코드 다운로드
@RequestMapping("download")
public void download(HttpServletRequest request, HttpServletResponse response) throws IOException, BiffException, WriteException {
response.setHeader("Content-Disposition", "attachment; filename=template.xls");
WritableWorkbook writableWorkbook = ExcelUtils.createTemplate(response.getOutputStream());
writableWorkbook.write();
writableWorkbook.close();
}
템플릿 클래스
static class ExcelUtils {
public static WritableWorkbook createTemplate(OutputStream output) throws IOException, WriteException {
WritableWorkbook writableWorkbook= Workbook.createWorkbook(output);
WritableSheet wsheet = writableWorkbook.createSheet(" title", 0);
CellFormat cf = writableWorkbook.getSheet(0).getCell(1, 0).getCellFormat();
WritableCellFormat wc = new WritableCellFormat();
//
wc.setAlignment(Alignment.CENTRE);
//
// wc.setBorder(Border.ALL, BorderLineStyle.THIN);
wc.setBackground(jxl.format.Colour.GREEN);
Label nc0 = new Label(0, 0, " 1",wc);//Label(x,y,z) x x+1 , y+1 , z
Label nc1 = new Label(1, 0, " 2",wc);
Label nc2 = new Label(2, 0, " 3",wc);
Label nc3 = new Label(0, 1, "dddd");
Label nc4 = new Label(1, 1, "ffff");
wsheet.addCell(nc0);
wsheet.addCell(nc1);
wsheet.addCell(nc2);
wsheet.addCell(nc3);
wsheet.addCell(nc4);
return writableWorkbook;
}
}
마지막 공헌 아래 관련 코드:SpringTest_jb51.rar 이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springmvc application/octet-stream problemmistake: Source code: Solution: Summarize: application/octet-stream is the original binary stream method. If the convers...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.