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 List nameList = 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