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

初学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>    

效果如图





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值