日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java web 导出word_JavaWeb Project使用FreeMaker导出Word文件

發布時間:2023/12/13 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java web 导出word_JavaWeb Project使用FreeMaker导出Word文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本思路

1. 導入freemaker2.3.jar

2. 需要導出的Word模板

3. 在Word內填入值的標簽

4. Word另存為xml(2003版本)

5. Coding

6. 導出Word文件

具體操作

1. Intellij IDEA > FIle > Project Structure > Libraries > "+"(左下角) > OK

導入Freemaker Jar

2. Word模板有需求方提供

基本模板

3.?在Word內填入需要值的標簽

填入對應標簽

4. 另存為Word 2003 XML文檔

轉出XML

5. 放進項目文件

6. 實現代碼

'''

/**

* 獲取導出任務書所需要的數據,并封裝進dataMap

* @param studWorkProcess

* @param studWork1

* @param request

* @param response

* @return

*/

@RequiresPermissions("studwork:studwork1:studWork1:edit")

@RequestMapping(value = {"exportStudWork1"})

public StringexportStudWork1(StudWorkProcess studWorkProcess, StudWork1 studWork1, HttpServletRequest request, HttpServletResponse response) {

studWork1.setId(studWorkProcess.getId());

List studWork1List =studWork1Service.findList(studWork1);

if(studWork1List.size() ==1) {

Map dataMap =new HashMap();

// set this yaer

dataMap.put("year","2020");

User user =systemService.getUser(studWork1List.get(0).getStudId());

// get student user obj

dataMap.put("user",user);

dataMap.put("studWork1", studWork1List.get(0));

User currentStudent =systemService.getUser(studWork1.getStudId());

// file name

String fileName = currentStudent.getNo() +"_" + currentStudent.getName() +"_" +"任務書.doc";

try {

download(response, fileName, dataMap);

}catch (Exception e) {

e.printStackTrace();

}

}

return "modules/studwork/studwork1/studWork1List";

}

/**

* 導出任務書doc文件

* @param response

* @param newWordName

* @param dataMap

*/

public void download(HttpServletResponse response, String newWordName, Map dataMap) {

Configuration configuration =new Configuration();

// set encoding

configuration.setDefaultEncoding("utf-8");

String path =this.getClass().getResource("/").getPath();

StudWork1 studWork1 =new StudWork1();

// get template path

configuration.setClassForTemplateLoading(studWork1.getClass(), "/");

Template t =null;

try {

// word1.xml is a template(generate by file 01)

User user = UserUtils.getUser();

if(user.getIsTeacher() ==null || user.getIsTeacher() ==""){

t = configuration.getTemplate("word1.xml","utf-8");

}else{

t = configuration.getTemplate("word1_stamp.xml","utf-8");

}

}catch (Exception e) {

e.printStackTrace();

}

File outFile =null;

Writer out =null;

String filename = newWordName;

try {

outFile =new File(newWordName);

out =new BufferedWriter(new OutputStreamWriter(

new FileOutputStream(outFile),"utf-8"));

}catch (Exception e1) {

e1.printStackTrace();

}

try {

t.process(dataMap, out);

}catch (Exception e) {

e.printStackTrace();

}

try {

out.flush();

out.close();

}catch (IOException e) {

e.printStackTrace();

}

InputStream fis =null;

OutputStream toClient =null;

try {

fis =new BufferedInputStream(new FileInputStream(outFile));

byte[] buffer =new byte[fis.available()];

fis.read(buffer);

fis.close();

// clear response

response.reset();

// set header and translate encoding

filename = URLEncoder.encode(filename, "utf-8");

response.addHeader("Content-Disposition", "attachment;filename=" + filename+"");

response.addHeader("Content-Length", "" + outFile.length());

toClient =new BufferedOutputStream(response.getOutputStream());

response.setContentType("application/octet-stream");

toClient.write(buffer);

toClient.flush();

}catch (Exception e) {

e.printStackTrace();

}finally{

try {

if(fis!=null){

fis.close();

}

}catch (IOException e) {

e.printStackTrace();

}

try {

if(toClient!=null){

toClient.close();

}

}catch (Exception e) {

e.printStackTrace();

}

}

}

'''

采坑

1. Word導出格式一定要是2003版本的XML,不然生成的文件無法正常打開

2. Word另存為過程中,會將部分標簽分開,需要手動調整

'''

${

studwork.thesisTitle

}

'''

調整后

'''

${studwork.thesisTitle}

'''

總結

以上是生活随笔為你收集整理的java web 导出word_JavaWeb Project使用FreeMaker导出Word文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。