Apache POI library is Java APIs for manipulating various file formats based upon the Office Open XML standards (OOXML) and Microsoft's OLE 2 Compound Document format (OLE2).OLE2 files include most Microsoft Office files such as XLS, DOC, and PPT. You can read and write MS Excel , MS Word , MS PowerPoint files using Java. Apache POI is your Java Excel solution (for Excel 97-2008).
Some of acronym use here :-
1. HSSF (Horrible SpreadSheet Format) – reads and writes Microsoft Excel (XLS) format files.
In this example we will use Apache POI library to perform Microsoft Excel spreadsheet export operation via Struts2. Download poi.jar & add to lib folder either add Maven as dependency in pom.xml
org.apache.poi poi 3.9
Create a web project with required struts2 jar & also poi.jar.
struts.xml
/exporttoexcel.jsp attachment;filename="${reportFile}"application/vnd.ms-excelinputStream1024
web.xml
ApachePOIExport struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* index.jsp
StudentBean.java
package com.struts2.javastoreroom; public class StudentBean { private int id; private String name; public StudentBean(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
RetrieveAction.java
package com.struts2.javastoreroom; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Calendar; import java.util.List; 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.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") public class RetrieveAction extends ActionSupport { /** * @author Arun */ private ListnameList = new ArrayList (); private InputStream inputStream; private String reportFile; public String fetchName() { return SUCCESS; } /** * student data to export , get from database if you export from database * * @return {@link List} */ private List fetchList() { { nameList.add(new StudentBean(1, "Arun")); nameList.add(new StudentBean(2, "Anu")); nameList.add(new StudentBean(3, "Aryan")); nameList.add(new StudentBean(4, "Anu")); nameList.add(new StudentBean(5, "Aranv")); nameList.add(new StudentBean(6, "Arun")); } return nameList; } /** * create HSSF read and write in spreadsheets * * @return */ public String exportEmployeeDetails() { HSSFWorkbook myWorkBook = new HSSFWorkbook(); HSSFSheet mySheet = myWorkBook.createSheet(); try { Calendar calendar = Calendar.getInstance(); List studentBeans = fetchList(); reportFile = "Student Report" + calendar.get(Calendar.YEAR) + "".concat(".xls"); Row headerRow = mySheet.createRow(0); headerRow.setHeightInPoints(50); Cell titleCell = headerRow.createCell(0); titleCell.setCellValue("Student Report " + calendar.get(Calendar.YEAR) + ""); setStudentAllInfo(mySheet, studentBeans); try { ByteArrayOutputStream boas = new ByteArrayOutputStream(); myWorkBook.write(boas); setInputStream(new ByteArrayInputStream(boas.toByteArray())); } catch (IOException e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } return SUCCESS; } /** * setting field value as you want to export in .xls * * @param mySheet * @param studentBeans */ private void setStudentAllInfo(HSSFSheet mySheet, List studentBeans) { int rowNum = 2; HSSFRow myRow = null; final String[] errorSource = { "Id", "Name" }; try { Row header = mySheet.createRow(1); for (int i = 0; i < errorSource.length; i++) { Cell monthCell = header.createCell(i); monthCell.setCellValue(errorSource[i]); } for (StudentBean studentBean : studentBeans) { myRow = mySheet.createRow(rowNum++); myRow.createCell(0).setCellValue(studentBean.getId()); myRow.createCell(1).setCellValue(studentBean.getName()); } } catch (Exception e) { e.printStackTrace(); } } public String execute() { return SUCCESS; } public String getReportFile() { return reportFile; } public void setReportFile(String reportFile) { this.reportFile = reportFile; } public InputStream getInputStream() { return inputStream; } public void setInputStream(InputStream inputStream) { this.inputStream = inputStream; } public List getNameList() { return nameList; } public void setNameList(List nameList) { this.nameList = nameList; } }
index.jsp
<%response.sendRedirect("fetchName.action");%>
exporttoexcel.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>Insert title here Export To Excel
While executing the project below output shown click on export link and dialog box shown where you save file :-
No comments:
Post a Comment