반응형
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
@RequestMapping("/excel")
public void excel(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
String fileName = "test_excel.xlsx";
// 여기서부터는 각 브라우저에 따른 파일이름 인코딩작업
String browser = request.getHeader("User-Agent");
if (browser.indexOf("MSIE") > -1) {
fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.indexOf("Trident") > -1) { // IE11
fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.indexOf("Firefox") > -1) {
fileName = "\"" + new String(fileName.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.indexOf("Opera") > -1) {
fileName = "\"" + new String(fileName.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.indexOf("Chrome") > -1) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < fileName.length(); i++) {
char c = fileName.charAt(i);
if (c > '~') {
sb.append(URLEncoder.encode("" + c, "UTF-8"));
} else {
sb.append(c);
}
}
fileName = sb.toString();
} else if (browser.indexOf("Safari") > -1) {
fileName = "\"" + new String(fileName.getBytes("UTF-8"), "8859_1") + "\"";
} else {
fileName = "\"" + new String(fileName.getBytes("UTF-8"), "8859_1") + "\"";
}
response.setContentType("application/download;charset=utf-8");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\";");
response.setHeader("Content-Transfer-Encoding", "binary");
OutputStream os = null;
SXSSFWorkbook wb = null;
Sheet sheet = null;
try {
wb = new SXSSFWorkbook();
sheet = wb.createSheet("test");
Row row = sheet.createRow(0);
Cell cell = null;
cell = row.createCell(0);
cell.setCellValue("a");
cell = row.createCell(1);
cell.setCellValue("b");
cell = row.createCell(2);
cell.setCellValue("c");
os = response.getOutputStream();
// 파일생성
wb.write(os);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (wb != null) {
try {
wb.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
반응형
'java' 카테고리의 다른 글
java proxy (0) | 2021.04.07 |
---|---|
JAVA 정규식 html javascript 삭제 (0) | 2020.12.10 |
JAVA File to byte [] (0) | 2013.01.11 |
[RCP] "org.eclipse.ui.ide.workbench" could not be found in the registry (0) | 2012.01.26 |
java File Delete (0) | 2011.03.03 |