Export to Excel using spring and Apache POI.
First
include the poi jar file downloaded from apache poi.
Entry
in application-servlet.xml:
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"
/>
<bean class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location">
<value>/WEB-INF/spring-excel-views.xml</value>
</property>
<property name="order"
value="0" />
</bean>
<bean id="ExcelRevenueSummary" class="com.application.utility.ExcelRevenueReportView" />
Entry
in spring-excel-views.xml :
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="ExcelRevenueSummary"
class="com.application.utility.ExcelRevenueReportView">
</bean>
</beans>
RevenueReportController.java
class :
package com.application.utility;
import
java.util.HashMap;
import java.util.Map;
import
javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import
org.springframework.stereotype.Controller;
import
org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.servlet.ModelAndView;
import
org.springframework.web.servlet.mvc.AbstractController;
@Controller
@RequestMapping("/exportForClient.htm")
public class RevenueReportController extends
AbstractController{
@Override
protected ModelAndView
handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
//String output = ServletRequestUtils.getStringParameter(request,
"output");
//dummy data
Map<String,String> revenueData
= new
HashMap<String,String>();
revenueData.put("Jan/2012", "$10");
revenueData.put("Feb/2012", "$110,000");
revenueData.put("Mar/2012", "$130,000");
revenueData.put("Apr/2012", "$140,000,000");
revenueData.put("May/2012", "$220,000,000");
System.out.println("RevenueReportController.handleRequestInternal()");
return new ModelAndView("ExcelRevenueSummary","revenueData",revenueData);
/* if(output
==null || "".equals(output)){
//return normal view
return new
ModelAndView("RevenueSummary","revenueData",revenueData);
}else
if("EXCEL".equals(output.toUpperCase())){
//return excel view
return new
ModelAndView("ExcelRevenueSummary","revenueData",revenueData);
}else{
//return normal view
return new
ModelAndView("RevenueSummary","revenueData",revenueData);
}
*/
}
}
The commented part can be used
to forward your view at different location.
ExcelRevenueReportView.java
class :
package com.application.utility;
import java.util.Map;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.poi.hssf.usermodel.HSSFRow;
import
org.apache.poi.hssf.usermodel.HSSFSheet;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook;
import
org.springframework.web.servlet.view.document.AbstractExcelView;
public class
ExcelRevenueReportView extends AbstractExcelView{
@Override
protected void
buildExcelDocument(Map model, HSSFWorkbook workbook,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
Map<String,String> revenueData
= (Map<String,String>) model.get("revenueData");
//create a wordsheet
HSSFSheet sheet =
workbook.createSheet("Data Report");
HSSFRow header = sheet.createRow(0);
header.createCell(0).setCellValue("Month");
header.createCell(1).setCellValue("Data");
int rowNum = 1;
for
(Map.Entry<String, String> entry : revenueData.entrySet()) {
//create the row data
HSSFRow row =
sheet.createRow(rowNum++);
row.createCell(0).setCellValue(entry.getKey());
row.createCell(1).setCellValue(entry.getValue());
}
}
}
Call this from your onSubmit
method of your controller according to the condition you required.
return "redirect:exportForClient.htm";
No comments:
Post a Comment