java按照模板导出Excel工具类

2 篇文章 0 订阅
1 篇文章 0 订阅

准备模板:

模板中使用jxls表达式,详细的jxls表达式使用可以到网上查找。一下给出简单的说明

<jx:forEach items="${results.list}" var="v" varStatus="vs">

${v.JIGOUID}

</jx:forEach>

jxls的循环方法,使用此方法,根据规定要放在要显示数据的第一列,items进行列表循环取值

使用el表达式取值。

1.项目路径获取

public class PathUtil {


/*
* 获取classpath
*/
public static String getClasspath(){
String path = (String.valueOf(Thread.currentThread().getContextClassLoader().getResource(""))+"../../").replaceAll("file:/", "").replaceAll("%20", " ").trim();
if(path.indexOf(":") != 1){
path = File.separator + path;
}
return path;
}

}

2.读取properties文件工具类

/**
 * 文件读取工具类
 *
 */
public class ReadProperties {
//fileName:properties文件名
public static String getValueByKey(String fileName,String key){
String value = "";
Properties prop = new Properties();
if(fileName != null){
ClassLoader classLoader = ReadProperties.class.getClassLoader();// 读取属性文件
InputStream in = classLoader.getResourceAsStream(fileName+".properties");
try {
prop.load(new InputStreamReader(in,"UTF-8"));//中文乱码问题
/// 加载属性列表
            Iterator<String> it = prop.stringPropertyNames().iterator();
            while (it.hasNext()) {
                if (it.next().equals(key)) {
                value = prop.getProperty(key);
                }
            }
            in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return value;
}

3.excel导出工具类

import java.util.HashMap;

import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jxls.transformer.XLSTransformer;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;


public class ExcelExport {

/**

* jar包:按照import导入即可,jar下载地址:http://www.manyjar.com/,也可自行网上下载,都能找到,同时也需要引入poi           *  的相关jar包

* 功能描述:<p>excel文件导出;根据模板进行导出<p>
* @param beanParams excel导出的数据
* @param response 下载时的浏览器响应
* @throws Exception 
*/
public static void excelExport(Map<String,Object> beanParams,HttpServletResponse response) throws Exception{
//获取请求
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
//获取参数报表唯一标识ID
String reportId = request.getParameter("reportId");
//根据reportId 获取excel.properties文件中的对应模板名称
String tempname = ReadProperties.getValueByKey("excel", reportId);
//取得文件的存储路径,得到静态文件
String temppath = PathUtil.getClasspath()+"uploadFiles//template//templatePath//";
String destPath = PathUtil.getClasspath()+"uploadFiles//template//downloadPath//";
//得到模板绝对路径
String templateFilePath = temppath+tempname;
//得到下载使用的文件名
String destname = tempname;
//得到下载文件绝对路径
String destFilePath = destPath+destname;
//创建结果集resultsMap
Map<String,Object> resultsMap = new HashMap<String,Object>();
//得到结果集
resultsMap.put("results",beanParams);
//创建jxsl对象
XLSTransformer xlsTransformer = new XLSTransformer();
//得到templateFilePath、结果集与destFilePath,并进行模版转换
xlsTransformer.transformXLS(templateFilePath, resultsMap, destFilePath);
//下载文件

FileDownload.fileDownload(response, destFilePath, destname);//方法上一篇已经给出,地址

//https://blog.csdn.net/gaohengtime/article/details/80755105

}
注:本文章仅用于学习交流使用。

}

根据excel模板动态导出数据库数据 package text; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.servlet.ServletContext; import net.sf.jxls.transformer.XLSTransformer; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class TextAction extends ActionSupport { /** */ private static final long serialVersionUID = 1L; private String filename; @SuppressWarnings("rawtypes") public String export() throws Exception { String templateFile = "18.xls"; // String sql = "select * from t_ry order by rybm"; // exportAndDownload(templateFile, DataBase.retrieve(sql)); List datas = new ArrayList(); @SuppressWarnings("unchecked") HashMap map = new HashMap(); map.put("name", "1111"); datas.add(map); exportAndDownload(templateFile, datas); return SUCCESS; } @SuppressWarnings({ "rawtypes", "unchecked" }) public void exportAndDownload(String templateFile, List datas) { try { filename = UUID.randomUUID() + templateFile; // FacesContext context = FacesContext.getCurrentInstance(); // ServletContext servletContext = (ServletContext) // context.getExternalContext().getContext(); ServletContext servletContext = ServletActionContext .getServletContext(); String path = servletContext.getRealPath("\\ExcelFile"); String srcFilePath = path + "\\template\\" + templateFile; String destFilePath = path + "\\download\\" + filename; Map beanParams = new HashMap(); beanParams.put("results", datas); XLSTransformer transfer = new XLSTransformer(); transfer.transformXLS(srcFilePath, beanParams, destFilePath); // Browser.execClientScript("window.location.href='../ExcelFile/downloadfile.jsp?filename=" // + destFile + "';"); } catch (Exception e) { e.printStackTrace(); } } public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值