SSH框架 POI建立excel表格弹出文件选择目录后保存到本地

来源:互联网 发布:java常用工具类 编辑:程序博客网 时间:2024/06/10 01:58

初学POI和SSH框架,通过这几天整理各个大牛们的代码,终于整出一个能用的了,以最简单的例子为例

通过POI建立excel表格后点击下载能够下载该excel表格到本地中


action层

我是做的一个题库,以文字题题库为例

package com.emsp.website.safetyStudy.action;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import javax.annotation.Resource;import org.apache.struts2.ServletActionContext;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.emsp.website.common.base.impl.BaseActionImpl;import com.emsp.website.safetyStudy.domain.QuestionA;import com.emsp.website.safetyStudy.domain.QuestionB;import com.emsp.website.safetyStudy.domain.QuestionC;import com.emsp.website.safetyStudy.domain.QuestionD;import com.emsp.website.safetyStudy.domain.Questions;import com.emsp.website.safetyStudy.service.QuestionsService;import com.emsp.website.system.domain.Sys_User;import com.opensymphony.xwork2.ActionContext;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import jxl.Sheet;import jxl.Workbook;@Controller@Scope("prototype")public class SafetyStudyIndexAction extends BaseActionImpl<Questions> {private static final long serialVersionUID = 1L;private Questions model = new Questions();@Resourceprivate QuestionsService questionsService;private InputStream inputStream;public InputStream getInputStream() {return inputStream;}public void setInputStream(InputStream inputStream) {this.inputStream = inputStream;} public Questions getModel() {return model;}public void prepare() throws Exception {}// *****************************************************************///** * 下载题库类型:下载文字题模板 * @throws IOException  * @throws Exception  */public String downloadText() throws Exception{setInputStream(questionsService.exportText());return "downloadText" ;}}
Service层

QuestionsService.java

package com.emsp.website.safetyStudy.service;import java.io.InputStream;import java.util.List;import com.emsp.website.safetyStudy.domain.Questions;public interface QuestionsService {InputStream exportText();//下载文字题模板}
QuestionsServiceImpl.java
package com.emsp.website.safetyStudy.service.impl;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.List;import javax.annotation.Resource;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFFont;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.HSSFColor;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.emsp.website.safetyStudy.dao.QuestionsDao;import com.emsp.website.safetyStudy.domain.Questions;import com.emsp.website.safetyStudy.service.QuestionsService;@Service@Transactionalpublic class QuestionsServiceImpl implements QuestionsService {@Resourceprivate QuestionsDao questionsDao;/** * 下载文字题 */public InputStream exportText() {String fileName = "text_template.xls";HSSFWorkbook wb = new HSSFWorkbook();//工作表HSSFSheet sheet = wb.createSheet("sheet1");//行HSSFRow row = sheet.createRow(0);//单元格row.createCell(0).setCellValue("文字题题干");row.createCell(1).setCellValue("A选项");row.createCell(2).setCellValue("B选项");row.createCell(3).setCellValue("C选项");row.createCell(4).setCellValue("D选项");row.createCell(5).setCellValue("答案");row.createCell(6).setCellValue("说明:本模板适用于文字题题型上传模板,内容以此表头为例,此列不能添加内容");//格式化,设置单元格的样式sheet.setColumnWidth(0, 6000);sheet.setColumnWidth(1, 6000);sheet.setColumnWidth(2, 6000);sheet.setColumnWidth(3, 6000);sheet.setColumnWidth(4, 6000);sheet.setColumnWidth(5, 2000);sheet.setColumnWidth(6, 8000);HSSFCellStyle style = wb.createCellStyle();style.setWrapText(true);row.getCell(0).setCellStyle(style);row.getCell(1).setCellStyle(style);row.getCell(2).setCellStyle(style);row.getCell(3).setCellStyle(style);row.getCell(4).setCellStyle(style);row.getCell(5).setCellStyle(style);//设置字体为红色style = wb.createCellStyle();style.setWrapText(true);HSSFFont font = wb.createFont();font.setColor(HSSFColor.RED.index);style.setFont(font);row.getCell(6).setCellStyle(style);File file = new File(fileName);try {OutputStream out=new FileOutputStream(file);wb.write(out);out.flush();out.close();} catch (Exception e) {e.printStackTrace();}InputStream in=null;    }

struts.xml

<!-- 下载各种题型模板 -->    <result name="downloadText" type="stream">          <param name="inputStream">excelStream</param>          <param name="ContentType">application/vnd.ms-excel</param>        <param name="contentDisposition">filename="text_template.xls"</param>      </result>


jsp

 <span ><s:a action="/website/safetyStudy/safetyStudyIndex/safetyStudyIndexAction_downloadText" style="text-decoration:none; color:#000;">文字题上传模板下载</s:a></span>    

效果如图





0 0