반응형
java poi 활용 json 데이터 엑셀 다운로드 기능 구현
우선 poi jar 파일을 다운로드 하기 위해서는 아래 링크로 이동합니다.
https://poi.apache.org/download.html
위의 링크로 이동 후 Binary Distribution에서 zip파일 다운로드 하시면 됩니다.
다운로드 후 jar 파일이 있는 곳에 copy 해주시고 아래에 따라 진행하세요.
jsp 에서 ajax를 사용하여 json 데이터를 서버로 보내 java 파일에서 엑셀을 저장한다.
[jsp파일]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
if(confirm("엑셀파일(.xls)로 저장하시겠습니까?")==true){
//json 방식으로 데이터 만들기
// 여기서는 easyUi datagrid를 사용했기 대문에 아래와 같이 했다.
// 일반 테이블 데이터를 가져올 경우에는 다르게 데이터를 가져온다.
var dataArray = new Array();
var rows = $('#dg').datagrid('getData').rows;
if (rows.length<1){
alert("엑셀파일로 저장할 데이터가 없습니다.");
return;
}
for(var i=0; i<rows.length; i++){
var dataObj = new Object();
dataObj.컬럼명1 = rows[i].컬럼명1;
dataObj.컬럼명2 = rows[i].컬럼명2;
dataArray.push(JSON.stringify(dataObj)); //jsonarray에 object를 담는다.
}
//json 형식으로 데이터를 가공한다.
var result = {'"dataList"' :[dataArray]};
var str='';
for(var i in result){
if(result.hasOwnProperty(i)){
str += i + ":[" + result[i]+"]";
}
}
var dataParam = "{"+str+"}";
//ajax를 사용하여 서버로 json 데이터를 보낸다.
$.ajax({
type : 'POST',
dataType : 'json',
data: dataParam,
url : '/excelDownload.do',
success : function(returnData) {
if(returnData.resultCode==200){
alert("D:/엑셀파일명.xls 로 저장되었습니다.");
}else if(returnData.resultCode==300){
alert("엑셀 데이터 저장에 실패하였습니다.");
};
},error:function(e){
if(e.status==300){
alert("엑셀 데이터 저장에 실패하였습니다.");
};
}
});
}
}
|
cs |
[java 파일]
/* 엑셀 다운로드 */
@RequestMapping("value/excelDownload.do", produces="text/plain;charset=UTF-8")
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public String excelDownload(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception {
System.out.println("exceldownload start!!");
Gson gson = new Gson();
BusViolationStatusSet set = new BusViolationStatusSet();
//request로 json 데이터 받기 String으로 받아 json으로 변환
String json = readJSONStringFromRequestBody(request);
JSONObject jObj = new JSONObject(json);
JSONArray dataArry = jObj.getJSONArray("dataList");
// Workbook 생성
Workbook xlsWb = new HSSFWorkbook(); // Excel 2007 이전 버전
Workbook xlsxWb = new XSSFWorkbook(); // Excel 2007 이상
// Sheet 생성
Sheet sheet1 = xlsWb.createSheet("첫차막차미준수");
// 컬럼 너비 설정
sheet1.setColumnWidth(0, 10000);
sheet1.setColumnWidth(20, 10000);
Row row = null;
Cell cell = null;
int listCnt = dataArry.length();
// excel 파일 저장
//1번째 행 컬럼명 생성
row = sheet1.createRow(0);
//엑셀 파일의 첫번째 줄에 컬럼병을 추가한다.
cell = row.createCell(0);
cell.setCellValue("첫번째 컬럼명");
cell = row.createCell(1);
cell.setCellValue("두번째 컬럼명");
try {
for (int i=1; i<listCnt+1; i++){
row = sheet1.createRow(i); //두번째줄을 생성(i+1)
cell = row.createCell(0); //두번째줄의 첫번째 행을 생성
//생성한 셀에 json데이터로 가져온 값을 입력
cell.setCellValue(dataArry.getJSONObject(i-1).getString("데이터명1"));
// 반복해서 셀 생성 후 값 입력
cell = row.createCell(1);
cell.setCellValue(dataArry.getJSONObject(i-1).getString("데이터명2"));
}
File xlsFile = new File("D:/생성할엑셀명.xls");
FileOutputStream fileOut = new FileOutputStream(xlsFile);
xlsWb.write(fileOut);
set.setResultCode(200);
set.setResultCode(propertiesService.getInt("SUCCESS"));
} catch (FileNotFoundException e) {
e.printStackTrace();
set.setResultCode(300);
set.setResultMsg("LOGIN_FAILED");
} catch (IOException e) {
e.printStackTrace();
}
return gson.toJson(set);
}
반응형
'Programing > JAVA' 카테고리의 다른 글
JAVA DB, 세션 활용 전체, 금일 방문객수 구하기 (0) | 2015.11.02 |
---|---|
poi 활용 excel 파일 생성 후 다운로드 창 띄워 위치설정해 다운 받는 방법. (1) | 2015.10.28 |
spring 서버 한글깨짐 문제 여러가지 해결 방법 (0) | 2015.09.24 |
ibatis 에러 해결 방법 com.ibatis.common.jdbc.exception.NestedSQLException (0) | 2015.09.17 |
Mybatis 마크업 에러 해결 방법 (0) | 2015.09.16 |
댓글