java 根據模板,匯出word並提供下載
java+springmvc實現根據freemarker模板匯出word模板。模板使用的字尾可以是:.xml,也可以是.ftl。
步驟1,引入freemarker的jar包。
步驟2,製作模板檔案。(紅框中的內容是為了替換使用)
另存為xml格式,
找到xml檔案,右鍵用editplus開啟,找到紅框的標記1,標記2進行修改。
如果是表格的話,表頭的第一行需要保留。
表格的主體部分需要保留一個,
這裡eList是從後臺賦值的一個集合,${e_index+1}是根據<#list eList as e>這個別名+_index得到,用法基本與el表示式用法相同。
這樣一個模板就完成了,將模板複製進專案中即可,字尾是什麼不重要,重要的是我們用freemarker解析。
步驟4,java後臺程式碼。
@RequestMapping("/test/toWord")
public ModelAndView toWord(HttpServletRequest request, HttpServletResponse response) throws IOException{
File file = createDoc();
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("UTF-8" );
java.io.BufferedInputStream bis = null;
java.io.BufferedOutputStream bos = null;
try {
long fileLength = file.length();
response.setContentType("application/msword");
response.setHeader("Content-disposition", "attachment; filename="
+ URLEncoder.encode("測試的,統計-匯出時間" +DateTimeUtils.getDateTime("yyyyMMddHHmmss")+".doc", "utf-8"));
response.setHeader("Content-Length", String.valueOf(fileLength));
bis = new BufferedInputStream(new FileInputStream(file));
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
return null;
}
private File createDoc(){
// 建立資料
Map<String,Object> dataMap = new HashMap<String, Object>();
dataMap.put("cwlx", "測試的");
List<?> eList = new ArrayList<?>();// 這裡是獲取list列表的方法
dataMap.put("czsj",DateTimeUtils.getDateTime("yyyyMMddHHmmss"));// 這裡是獲取當前時間的一種方式,可以根據自己程式自行修改
dataMap.put("eList", eList);
// 獲取模板
Configuration configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
configuration.setClassForTemplateLoading(this.getClass(), "/tpl");
Template t = null;
String name = "temp"+(int)(Math.random()*1000)+".doc";
File file = new File(name);
try {
t = configuration.getTemplate("model.xml");
t.setEncoding("UTF-8");
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(name),"UTF-8"));
t.process(dataMap, out);
out.close();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
return file;
}
在前臺頁面是需要做的就是傳送一個連結就可以了。
特別注意,
經常忽視的問題,編碼的問題,這裡需要統一編碼。
如果出現了word檔案不能開啟的情況,建議看一下後臺檔案是否報錯。如果後臺沒有報錯的話,建議用editplus開啟word的文件,檢視文件中是否有亂碼的情況。
筆者第一次使用的時候,經常出現word檔案不能開啟的問題,於是我在editplus中開啟,發現部分漢字是亂碼的,加了上圖紅框中的預設編碼的設定之後就可以了。
相關推薦
java 根據模板,匯出word並提供下載
java+springmvc實現根據freemarker模板匯出word模板。模板使用的字尾可以是:.xml,也可以是.ftl。 步驟1,引入freemarker的jar包。 步驟2,製作模板檔案。(紅框中的內容是為了替換使用) 另存為xml格式,
java根據模板生成pdf檔案並匯出(轉)
import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOException; import com.itextpdf.text.Document; import com.itextpdf.
Java根據模板匯出Excel並生成多個Sheet
因為最近用報表匯出比較多,所有就提成了一個工具類,本工具類使用的場景為 根據提供的模板來匯出Excel報表 並且可根據提供的模板Sheet頁進行復制 從而實現多個Sheet頁的需求, 使用本工具類時,如果需求是每個Sheet頁中的資料都不一致,但是表格樣式和模板都一樣 那
java freemarker 通過ftl模板檔案匯出word檔案發現在有中文地方出現在亂碼,開啟word檔案提示xml錯誤解決辦法
最近開發一個匯出word模板檔案在本機調整一直正常,但是在伺服器下載下來的檔案老提示xml錯誤,仔細檢視發現出錯的word檔案以xml形式打開發現在在報錯位置有亂碼, 剛開始以為是word轉xml是出現亂碼,單獨除錯word轉xml正常,那應該是向ftl檔案中寫入變數後以寫
java根據模板匯出excel(二)
最近在做一個專案,關於excel的匯出問題,上網查了很多,最後自己整理並編寫了關於模板匯出的方法,可能會有一些侷限性,但是對於簡單的模板匯出功能是可以實現的,先留下筆記,以供日後參考!思路其實很簡單,主要分為:(1)讀取模板excel(2)迴圈模
java根據模板匯出pdf(動態增加模板頁數)
這兩天碰到了一個根據模板匯出pdf的需求,研究了幾天以後,發現網上的資料不太齊全,主要是沒找到既根據模板匯出,又可以動態增加頁數的例子。只能通過各種資料結合來實現這個需求了(其實是懶得看iText英文文件,這個以後得改過來)。 下面先來說下pdf匯出主要的兩種方
Java根據模板生成excel並下載
需要用到的jar包有freemarker-2.3.18.jar,freemarker-util-0.0.1-SNAPSHOT.jar,jxl-2.6.10.jar,jxl-report-1.0.jar,這些網上都有,可以去找 來吧,直接上乾貨。excel模板如圖: 很容
Java中使用freemarker匯出word文件(詳細案例,含圖片和表格)
Java中使用freemarker匯出word文件(自己真實專案案例) 最近做了一個專案,有一個需求是要將職員的一些資料按照指定的樣式匯出成一個word文件出來,由於自己是一個Java小白,不懂,於是便在網上找方法,網上介紹的有很多,因為原來用poi匯出過pp
匯出List列表中的資料到Excel檔案,並提供下載
整體思路 客戶在頁面點選“匯出Excel”連結-->>進入Java邏輯處理程式碼-->>複製Excel模版檔案-->>向這個複製過的模版檔案中寫入List資料-->>把資料寫入完成的Excel檔案下載到客戶端 適用場景 資料格
轉:java 解析excel,帶合並單元的excel
void lena words ger add leo main 下標 解析excel 收集了一些對博主有幫助的博文,如下 >>>>>>>>>>>第一部分: 首先,mavn導入jar包 <!-- 解
Java根據模板建立excel檔案
1.首先匯入xml檔案,src下建包xml,將student.xml檔案放入此資料夾中 <excel id="student" code="student" name="學生資訊匯入"> <colgroup> <co
java中使用freemarker匯出word文件
公司專案要求要有一個能匯出成一份word文件的功能,於是就上網搜了一些教程,但我跟著教程使用的時候還是遇到了很多問題,這裡我自己總結一份我作為新手使用freemarker能看懂的文章。可能以後自己還會用到,至少到時候忘了還可以翻看一下。 首先要自己在網上下載一個freema
Thinkphp3.2版本結合phpqrcode生成二維碼並提供下載
com value inf PQ png 容錯 AI mini eve 說明:這篇文章主要為大家詳細介紹了Thinkphp3.2.3整合phpqrcode生成帶二維碼的實現方法並提供圖像下載,感興趣的小夥伴們可以參考一下 緣由:Thinkphp中沒有二維碼相關的庫,因此我們
Ubuntu 18.10 Beta 版本釋出並提供下載
Ubuntu 18.10 Beta 這是官方提供的歡迎開發人員,熱心粉絲下載的 Ubuntu 18.10 測試版,以幫助測試下個月穩定釋出之前的版本。 Ubuntu 18.10 Beta Ubuntu 18.10 的釋出日期定在10月18日,在此之前,Ubuntu 18.10 測試
java寫檔案、匯出效率問題以及下載問題
首先比較常用的輸出流方法分為兩大類:OutputStream類和Writer類,分別有FileOutputStream、BufferedOutputStream、FileWriter和BufferedWriter。 通過以上兩篇文章我們可以發現,FileWri
使用freemarker 匯出word供別人下載
公司做專案需要一個功能,要求如下, 把符合條件的一個列表list 匯出成word,以供別人下載。 開始想使用poi 進行操作表,思來想去,對這個還是不熟悉, 也想用jacob進行操作,也不是很理想,上google的一把,找到了 http://blog.csdn.net/my
Aspose.Word之通過模板(書籤)匯出word文件,並刪除多餘的單元格
public partial class WordExport_KJYJJRHLTHTS : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e)
【Apache POI】Java Web根據模板匯出word檔案
最近工作中遇到一個需求:根據word模板文件匯出word檔案。 查閱了一些資料,發現Apache POI可以實現文件讀寫的功能,於是就研究了一下,總結如下: POI詳細介紹: Apache POI是一個開源的Java讀寫Excel、WORD等微軟OLE2元件
基於ABP做一個簡單的系統——實戰篇:4.基於富文字編輯器,Razor模板引擎生成內容並匯出Word 填坑記錄
起因 需求是這樣的,有一種協議需要生成,協議的模板是可配置的,在生成過程中,模板中的內容可以根據約定的標記進行替換(就像mvc的razor模板一樣)。生成後的內容還需要匯出成word或pdf。 常見的使用場景比如租賃協議生成,郵件內容模板生成等等,不要傻傻的hard-code像‘#name#’這樣的標記了。
C#使用NPOI讀取excel模板,並匯出excel
private void ExportDoctoryCase(HttpContext context) { //載入模板檔案路徑 string TempletFileName = context.Serv