使用freemarker將echarts圖片儲存到word中
使用freemarker將echarts圖片儲存到word中
在某已領域的業務中,經常需要對一類資料進行統計,生成echarts圖表並且附帶相應的描述材料匯出:
將echarts儲存到本地
java讀取圖片進行base64編碼
製作freemarker模板
填充freemarker模板
下載word
將echarts儲存到本地
使用js傳送相應的請求:
//讓圖片先載入一會兒
setTimeout(exportImage, 2000);
function exportImage(){
var data = "a="+encodeURIComponent(myChart.getDataURL("png"));
var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST","<%=path%>/servlet/saveImage",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert("儲存成功");
}
}
xmlhttp.send(data);
}
}
);
java端程式碼如下:
String a = request.getParameter("a");
try {
String[] url = a.split(",");
String u = url[1];
// Base64解碼
byte[] b = new BASE64Decoder().decodeBuffer(u);
WordUtil wordUtil = new WordUtil();
String fileStr = wordUtil.saveFile();
// 生成圖片
OutputStream out = new FileOutputStream(new File(fileStr+"\\test.png"));
out.write(b);
out.flush();
out.close();
java讀取圖片進行base64編碼
將檔案轉換為byte陣列在進行base64編碼,程式碼如下
public String getImageStr(String imgFile) {
InputStream in = null;
byte[] data = null;
try {
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);
}
製作freemarker模板
製作freemarker模板很簡單,注意word的版本:
將word文件進行排版,圖片,文字等進行排版固定, 使用office將word另存為xml檔案,開啟xml檔案使用${*}將文字和圖片替換,儲存xml,將字尾修改為ftl。
這樣我們的模板就做好了,接下來呼叫工具類將內容填充到模板中,程式碼如下:
public class TemplateTool {
private Configuration configuration = null;
public TemplateTool(){
configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
}
// 引數:模板路徑、模板名稱、生成檔案路徑、要加入的資料map
public void createFile(String temPath, String temName, String filePath, Map dataMap){
configuration.setClassForTemplateLoading(this.getClass(), temPath);
Template tl = null;
try{
tl = configuration.getTemplate(temName);
}catch (IOException e){
e.printStackTrace();
}
File outFile = new File(filePath);
Writer out = null;
try{
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
}catch(FileNotFoundException e1){
e1.printStackTrace();
}
try{
tl.process(dataMap, out, ObjectWrapper.BEANS_WRAPPER);
out.flush();
out.close();
}catch (TemplateException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
到這裡,圖文並茂的word已經生成好了,接下來只要提供檔案下載就實現功能了。
相關文章
- 使用Java將圖片生成sequence file並儲存到HBaseJava
- ImageView中圖片儲存到檔案View
- 將圖片檔案儲存到Oracle的儲存過程Oracle儲存過程
- 【freemaker實現匯出word③】詳解將echarts的圖片到出到wordEcharts
- Android將圖片儲存到相簿並及時看到Android
- 將echarts生成的圖表變為圖片儲存起來Echarts
- python抓取網頁中圖片並儲存到本地Python網頁
- 短視訊平臺開發,將圖片、視訊儲存到本地的相簿中
- 諮詢數學公式儲存到mysql中 非圖片形式儲存公式MySql
- 長按UIWebView上的圖片儲存到相簿UIWebView
- 原生JS實現base64圖片下載-圖片儲存到本地JS
- 爬取微博圖片資料存到Mysql中遇到的各種坑mysql儲存圖片爬取微博圖片MySql
- Matplotlib中將繪圖儲存到Numpy陣列的2種方法繪圖陣列
- 將ebay易貝網上的多款商品圖片儲存到電腦要怎麼操作
- 微信小程式--通過canvas生成圖片並儲存到本地微信小程式Canvas
- iOS視訊、圖片下載加密 解密以及儲存到本地iOS加密解密
- ASP.NET將Session儲存到資料庫中ASP.NETSession資料庫
- 種草丨小紅書圖片如何儲存到手機?高畫質無水印圖片!(收藏)
- 使用 JDAudioCrawler 將下載的音訊儲存到本地儲存音訊
- 在echarts中,柱狀圖、折線圖來回切換以及儲存為圖片的屬性Echarts
- express,koa2等node處理前端上傳圖片並儲存到檔案中Express前端
- 將網站儲存成圖片網站
- python入門012~使用requests爬取網路圖片並儲存到本地Python
- 在微信小程式中使用 echarts 圖片-例 折線圖微信小程式Echarts
- javascript如何將檔案儲存到本地JavaScript
- rust 截圖儲存到檔案Rust
- Android將view儲存為圖片並放在相簿中AndroidView
- 安卓上傳圖片到伺服器並儲存到電腦本地安卓伺服器
- 如何將圖片轉word?圖文轉換選轉易俠
- word備忘【圖片】
- Python 將Word轉換為JPG、PNG、SVG圖片PythonSVG
- Java Word中的文字、圖片替換功能Java
- 我是如何使用freemarker生成Word檔案的?
- 如何採集淘寶直通車的所有圖片,並儲存到電腦上
- 透過spark將資料儲存到elasticsearchSparkElasticsearch
- win10系統PrtScn鍵怎麼將截圖儲存到OneDriveWin10
- .NET 8 使用官方OpenXml SDK,替換Word中的文字和圖片XML
- 在Vue專案中使用Echarts(三): Echarts中的其他常用圖VueEcharts