亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用poi-tl操作word模板

發布時間:2021-11-10 09:54:35 來源:億速云 閱讀:666 作者:柒染 欄目:大數據

怎么使用poi-tl操作word模板,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

使用poi-tl操作word模板

1.導入jar包支持

<!-- poi-tl jar -->
<dependency>
	<groupId>com.deepoove</groupId>
	<artifactId>poi-tl</artifactId>
	<version>1.8.2</version>
</dependency>

2.建立word模板

  1. 在電腦E盤中建立word模板:“E:\templete.docx”

  2. 修改模板內容

標題:{{title}}
工單編號:{{workNo}}
發單日期:{{issueDate}}
列表數據:{{*list}}

3.生成代碼方法

/**
 * 根據word模板生成word文檔
 * @param request
 * @param response
 */
@RequestMapping(value = "expdoc")
public void expdoc(HttpServletRequest request, HttpServletResponse response){
	try {
		String tempFile="E:\\templete.docx";
		XWPFTemplate template = XWPFTemplate.compile(tempFile).render(
				new HashMap<String, Object>() {{
					put("title", "Hi, poi-tl Word模板引擎");
					put("workNo", "20200910-001");
					put("issueDate", "2020年9月10日");
					put("list", new NumbericRenderData(new ArrayList<TextRenderData>() {
						{
						   //循環list進行賦值 
						   for(String detail:list){
							   add(new TextRenderData(detail));
						   }
						}
                    }));
				}});
		response.setContentType("application/octet-stream");
		response.setHeader("Content-disposition","attachment;filename=\""+"out_template.docx"+"\"");
		OutputStream out = response.getOutputStream();
		BufferedOutputStream bos = new BufferedOutputStream(out);
		template.write(bos);
		template.close();
		bos.flush();
		bos.close();
		out.flush();
		out.close();
	} catch (Exception e) {
		e.printStackTrace();
	}
}

4.請求訪問

在瀏覽器中輸入請求地址:http://localhost:8080/expdoc ,瀏覽器自動下載word文檔,文檔名稱為:out_template.docx

5.數據封裝

5.1關聯實體

public class YdgdTemplete{
  private String demand;//要求
  private List<String> detailList;//列表數據
}

5.2訪問層

/**
 * 根據word模板生成數據信息,返回文檔訪問地址
 * @param request
 * @param response
 * @return 文檔訪問地址
 * @throws Exception
 */
@RequestMapping("expdoc")
@ResponseBody
public BasePageData expdoc(HttpServletRequest request, HttpServletResponse response) throws Exception {
	BasePageData data = new BasePageData();
	try {
		//獲取根目錄
		String realPath = request.getSession().getServletContext().getRealPath("/");
		//定義保存文檔目錄
		String fileDir = "/fileData/doc/";
		File saveFile = new File(realPath + fileDir);
		if (!saveFile.exists()) {// 如果目錄不存在
			saveFile.mkdirs();// 創建文件夾
		}
		//生成word文檔名稱
		String fileName = System.currentTimeMillis() + ".docx";
		//保存的文件的路徑信息
		String docPath = realPath + fileDir + fileName;
		//返回文檔路徑
		String backPath= fileDir + fileName;
		//封裝數據
		YdgdTemplete ydgdTemplete = new YdgdTemplete();
		ydgdTemplete.setDemand("生成測試數據"); 
		List<String> list = new ArrayList<>();
		list.add("第1條記錄");
		list.add("第2條記錄");
		ydgdTemplete.setDetailList(list);
		//根據模板生成word文檔
		Boolean falg = FileUtil.createdoc(docPath,ydgdTemplete);
	   //調用返回
		if(falg){
			data.setData(backPath);
			data.setCode(WebResponseCode.APPSUCCESS);
			data.setMsg("操作成功!");
		}else{
			data.setData(null);
			data.setCode(WebResponseCode.APPFAIL);
			data.setMsg("操作失敗!");
		}
		return data;
	} catch (Exception e) {
		e.printStackTrace();
		data.setCode(WebResponseCode.APPFAIL);
		data.setMsg("操作異常!");
		return data;
	}
}

5.3生成方法

/**
 * 根據word模板生成word文件
 * @param docPath
 * @param ydgdTemplete
 * @return
 */
public static boolean createdoc(String docPath, YdgdTemplete ydgdTemplete){
	try {
		if(StringUtil.isBlank(docPath)){
			return  false;
		}
		//讀取模板
		File file = ResourceUtils.getFile("classpath:templates/ydgd_templete.docx");
		XWPFTemplate template = XWPFTemplate.compile(file).render(
				new HashMap<String, Object>(){{
					//生成數據
					put("demand", ydgdTemplete.getDemand());
					//生成列表數據
					put("detailList", new NumbericRenderData(new ArrayList<TextRenderData>() {
						{
							if(null!=ydgdTemplete.getDetailList() && ydgdTemplete.getDetailList().size()>0){
							   for(String detail:ydgdTemplete.getDetailList()){
								   add(new TextRenderData(detail));
							   }
							}
						}
					}));
				}});
		FileOutputStream out = new FileOutputStream(docPath);
		template.write(out);
		out.flush();
		out.close();
		template.close();
		return true;
	} catch (Exception e) {
		e.printStackTrace();
		return false;
	}
}

關于怎么使用poi-tl操作word模板問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

衡南县| 华蓥市| 汤阴县| 雷波县| 绿春县| 得荣县| 荆州市| 营山县| 宁化县| 山丹县| 方城县| 开鲁县| 洪湖市| 塘沽区| 桦南县| 东山县| 三亚市| 颍上县| 吉安市| 九寨沟县| 红原县| 梁河县| 班玛县| 海盐县| 舞钢市| 通州市| 即墨市| 嘉禾县| 鹤壁市| 太和县| 仙桃市| 肇东市| 都兰县| 宁阳县| 沧州市| 长岭县| 三原县| 莆田市| 长寿区| 肇州县| 铜鼓县|