1、poi-tl
这个插件可用于导入导出word文档,简单易用(附文档地址:http://deepoove.com/poi-tl/#example-article)
使用步骤:
1、添加maven依赖
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.3.1</version>
</dependency>
2、使用示例
package com.ph.admin.util;
import java.io.*;
import java.util.*;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.deepoove.poi.data.TableRenderData;
import com.deepoove.poi.data.TextRenderData;
import com.deepoove.poi.data.style.Style;
import com.deepoove.poi.render.RenderAPI;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.POIXMLProperties.CoreProperties;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.PictureRenderData;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSym;
/**
* @author Admin
*
*/
public class WriteWordUtil {
/**
* word占位用{{object}}比较完美可以填充图片
* @param filePath
* @param params
* @param outFilePath
* @return
* @throws Exception
*/
public static String templateWrite(String filePath, Map<String, Object> params,String outFilePath)throws Exception{
XWPFTemplate template = XWPFTemplate.create(filePath);
RenderAPI.render(template,params);
FileOutputStream out = new FileOutputStream(outFilePath);
template.write(out);
out.flush();
out.close();
return "";
}
public static void main(String[] args) throws Exception {
Map<String, Object> params = new HashMap<String, Object>();
params.put("location", "上海");// location对应word文档中的格式是{{location}}
templateWrite("D:\\in.docx", params, "D:\\out.docx");
}
}
2、jxls2
这个插件可以用来对Excel文件的导入和导出(附文档地址:http://jxls.sourceforge.net/)
使用步骤:
1、添加maven依赖
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-poi</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls</artifactId>
<version>2.4.6</version>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-jexcel</artifactId>
<version>1.0.7</version>
</dependency>
2、使用示例
package com.ph.admin.util.quartz;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.jxls.common.Context;
import org.jxls.expression.JexlExpressionEvaluator;
import org.jxls.transform.Transformer;
import org.jxls.transform.poi.PoiTransformer;
import org.jxls.util.JxlsHelper;
/**
* @author Admin
*/
public class JxlsUtils{
public static void exportExcel(InputStream is, OutputStream os, Map<String, Object> model) throws IOException{
Context context = PoiTransformer.createInitialContext();
if (model != null) {
for (String key : model.keySet()) {
context.putVar(key, model.get(key));
}
}
JxlsHelper jxlsHelper = JxlsHelper.getInstance();
Transformer transformer = jxlsHelper.createTransformer(is, os);
//获得配置
JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator)transformer.getTransformationConfig().getExpressionEvaluator();
//设置静默模式,不报警告
//evaluator.getJexlEngine().setSilent(true);
//函数强制,自定义功能
// Map<String, Object> funcs = new HashMap<String, Object>();
// funcs.put("utils", new JxlsUtils()); //添加自定义功能
// evaluator.getJexlEngine().setFunctions(funcs);
//必须要这个,否者表格函数统计会错乱
jxlsHelper.setUseFastFormulaProcessor(false).processTemplate(context, transformer);
}
public static void exportExcel(File xls, File out, Map<String, Object> model) throws FileNotFoundException, IOException {
exportExcel(new FileInputStream(xls), new FileOutputStream(out), model);
}
public static void exportExcel(String templatePath, OutputStream os, Map<String, Object> model) throws Exception {
File template = getTemplate(templatePath);
if(template != null){
exportExcel(new FileInputStream(template), os, model);
} else {
throw new Exception("Excel 模板未找到。");
}
}
//获取jxls模版文件
public static File getTemplate(String path){
File template = new File(path);
if(template.exists()){
return template;
}
return null;
}
// 日期格式化
public String dateFmt(Date date, String fmt) {
if (date == null) {
return "";
}
try {
SimpleDateFormat dateFmt = new SimpleDateFormat(fmt);
return dateFmt.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
// if判断
public Object ifelse(boolean b, Object o1, Object o2) {
return b ? o1 : o2;
}
public static void main(String[] args) throws Exception {
// 模板路径和输出流
String templatePath = "d:\\in.xlsx";
OutputStream os = new FileOutputStream("d:\\out.xlsx");
// 定义一个Map,往里面放入要在模板中显示数据
Map<String, Object> item = new HashMap<String, Object>();
item.put("zqcode","11111"); //zqcode对应Excel里面的${zqcode}
//调用之前写的工具类,传入模板路径,输出流,和装有数据Map
exportExcel(templatePath, os, item);
os.close();
System.out.println("完成");
}
}