struts2 +poi 데이터 내보내기 excel
4923 단어 struts2
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellRangeAddress;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class BrowserAccessAction extends ActionSupport {
private ReportService reportService;
private String year;
private String month;
private String filename;
private InputStream excelStream;
public String export(){
HttpServletRequest request = ServletActionContext.getRequest();
String year = request.getParameter("year");
String month = request.getParameter("month");
String ym = year + month;
HSSFWorkbook workbook = null;
int rowIndex = 0;
try {
workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
//
sheet.addMergedRegion(new CellRangeAddress(rowIndex, rowIndex, 0, 1)); //
HSSFRow titleRow = sheet.createRow(rowIndex);
HSSFCell titleCell = titleRow.createCell(0);
titleCell.setCellType(HSSFCell.CELL_TYPE_STRING);
titleCell.setCellValue(new HSSFRichTextString(year+" "+month+" "));
//
HSSFRow labelRow = sheet.createRow(++rowIndex);
HSSFCell cell0 = labelRow.createCell(0);
cell0.setCellType(HSSFCell.CELL_TYPE_STRING);
cell0.setCellValue(new HSSFRichTextString(" "));
sheet.setColumnWidth(0, 100*50); //
HSSFCell cell1 = labelRow.createCell(1);
cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
cell1.setCellValue(new HSSFRichTextString(" (%)"));
sheet.setColumnWidth(1, 100*50);
//
List<BrowserAccessBean> list = this.reportService.selectBrowserAccess(ym);
for(BrowserAccessBean bean : list){
HSSFRow dataRow = sheet.createRow(++rowIndex);
HSSFCell c0 = dataRow.createCell(0);
c0.setCellType(HSSFCell.CELL_TYPE_STRING);
c0.setCellValue(new HSSFRichTextString(bean.getName()));
HSSFCell c1 = dataRow.createCell(1);
c1.setCellType(HSSFCell.CELL_TYPE_STRING);
c1.setCellValue(new HSSFRichTextString(String.valueOf(bean.getPerc())));
}
filename = ReportUtil.createFileName() + ".xls";
ByteArrayOutputStream out = new ByteArrayOutputStream();
workbook.write(out);
out.flush();
byte[] aa = out.toByteArray();
excelStream = new ByteArrayInputStream(aa, 0, aa.length);
out.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(workbook!=null){
workbook = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return "excel";
}
public InputStream getExcelStream(){
return this.excelStream;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
......
}
2、struts 설정
<action name="export" class="browserAccessAction" method="export">
<result name="excel" type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="contentDisposition">filename="${filename}"</param>
<param name="inputName">excelStream</param>
</result>
</action>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
apache struts2 취약점 검증이번에는 보안 캠프의 과제였던 apache struts2의 취약성에 대해 실제로 손을 움직여 실행해 보고 싶습니다. 환경 VirtualBox에서 브리지 어댑터 사용 호스트:macOS 10.12 게스트:ubuntu 1...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.