您的位置:首页 > 其它

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

2016-12-14 16:20 483 查看
初学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();

@Resource
private 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
@Transactional
public class QuestionsServiceImpl implements QuestionsService {

@Resource
private 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>    


效果如图



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  poi ssh 框架