7.28Excel和Word文件導出
文件導出
點擊HTML前台導出按鈕、
<div class="btn-group-sm" id="detailToolbar" role="group">
<a class="btn btn-warning" onclick="jsHelp.exportExcel()"
shiro:hasPermission="electricityTrading:powerManagement:export">
<i class="fa fa-download"></i> 導出
</a>
</div>
Onclick=:”jshelp.exportExcel()”
查看方法
Exportexcel()
調到common.js頁面
var jsHelp = {
exportExcel: function () {
$.ajax({
type: "POST",
url: "/electricityTrading/priceManagement/exprotExcel",
data: {},
cache: false,
dataType: 'json',
success: function (result) {
jsHelp.downloadFilesByNodeName(result.msg,"")
},
error: function (error) {
}
});
},
查看URL:url: "/electricityTrading/priceManagement/exprotExcel"
/**
* 根據excel模板導出數據
* @return
*/
@RequestMapping("exprotExcel")
@ResponseBody
public AjaxResult exprotExcel() {
TradeDetail tradeDetail=new TradeDetail();
List<TradeDetail> list = priceManagementService.selectTradeDetailList(tradeDetail);
freeMarkerExport fw=new freeMarkerExport();//實例化該導出類
Map dataMap = new HashMap();
try{
dataMap.put("list",list);//將數據裝進Map
dataMap.put("year", "2020");
dataMap.put("time", "2");
String excelName=fw.generateExcel(dataMap);//調用導出方法
String host = env.getProperty("Host");
String uploadPath = env.getProperty("uploadWordPath");
return success(host+uploadPath+excelName);
// return "http://localhost:8089/upload/購售電信息明細.xls";
}catch (Exception e){
e.printStackTrace();
return null;
}
查看他內部的方法
String excelName=fw.generateExcel(dataMap)
/**
* dataMap為要裝載的數據
*
* @param dataMap
*/
public String generateExcel(Map dataMap) {
// 設置模本裝置方法和路徑,FreeMarker支持多種模板裝載方法。可以重servlet,classpath,數據庫裝載,
// 這里我的模板是放在resources/ftl包下(放在其它位置總會報文件找不到)
configuration.setClassForTemplateLoading(this.getClass(),
"/ftl");
Template t = null;
try {
// test2.ftl為要裝載的模板
t = configuration.getTemplate("detail.ftl");
t.setEncoding("utf-8");
} catch (IOException e) {
e.printStackTrace();
}
// 輸出文檔路徑及名稱
String name = "購售電信息明細.xls";
String filePath = Global.getTemplatePath() + "/" + name;
//輸出文檔路徑及名稱
File outFile = new File(filePath);
// File outFile = new File("E:/detail3.xls");
Writer out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"));
} catch (Exception e1) {
e1.printStackTrace();
}
try {
t.process(dataMap, out);
out.close();
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return name;
}
Word文件下載導出
html中代碼
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="jsHelp.exportWord(\'' +row.contractId + '\')"><i class="fa fa-edit"></i>導出合同</a> ');
common.js中代碼
exportWord: function (contractId) {
$.ajax({
type: "POST",
url: "/electricityTrading/agencyContract/exportWord",
data: {contractId:contractId},
cache: false,
dataType: 'json',
success: function (result) {
jsHelp.downloadFilesByNodeName(result.msg,"")
},
error: function (error) {
}
});
},java 中代碼
@GetMapping("/detail")
public String detail() {
return prefix + "/detail";
}
/**
* 根據word模板導出數據
*/
@RequestMapping("/exportWord")
@ResponseBody
public AjaxResult exportWord(String contractId) {
TradeDetail tradeDetail = new TradeDetail();
BizAgencyContract bizAgencyContract = bizAgencyContractService.selectBizAgencyContractById(Long.parseLong(contractId));
freeMarkerExport fw = new freeMarkerExport();//實例化該導出類
Map dataMap = new HashMap();
try {
String wordName= fw.generateWord(bizAgencyContract);//調用導出方法
String host = env.getProperty("Host");
String uploadPath = env.getProperty("uploadWordPath");
return success(host+uploadPath+wordName);
// return url;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
String wordName= fw.generateWord(bizAgencyContract);//調用導出方法、
進入該方法
public String generateWord(BizAgencyContract bizAgencyContract) {
Map<String, Object> dataMap = new HashMap<String, Object>();
try {
//編號
dataMap.put("contractNo", bizAgencyContract.getContractNo());
dataMap.put("customerName", bizAgencyContract.getCustomerName());
dataMap.put("signedDate", bizAgencyContract.getSignedDate().toString());
dataMap.put("signedAddr", bizAgencyContract.getSignedAddr());
dataMap.put("customerName", bizAgencyContract.getCustomerName());
dataMap.put("familyAddr", bizAgencyContract.getFamilyAddr());
dataMap.put("legalPerson", bizAgencyContract.getLegalPerson());
dataMap.put("creditCode", bizAgencyContract.getCreditCode());
dataMap.put("voltCode", bizAgencyContract.getVoltCode());
dataMap.put("elecTypeCode", bizAgencyContract.getElecTypeCode());
dataMap.put("familyAddr", bizAgencyContract.getFamilyAddr());
dataMap.put("consNo", "");
dataMap.put("contractCap", "");
dataMap.put("electricitySum", bizAgencyContract.getElectricitySum());
dataMap.put("familyAddr", bizAgencyContract.getFamilyAddr());
dataMap.put("faxNo", bizAgencyContract.getFaxNo());
dataMap.put("email", bizAgencyContract.getEmail());
dataMap.put("firstContact", bizAgencyContract.getFirstContact());
dataMap.put("firstOfficeTel", bizAgencyContract.getFirstOfficeTel());
dataMap.put("firstMobile", bizAgencyContract.getFirstMobile());
dataMap.put("secondContact", bizAgencyContract.getSecondContact());
dataMap.put("secondOfficeTel", bizAgencyContract.getSecondOfficeTel());
dataMap.put("secondMobile", bizAgencyContract.getSecondMobile());
dataMap.put("customerName", bizAgencyContract.getCustomerName());
dataMap.put("legalPerson", bizAgencyContract.getLegalPerson());
dataMap.put("signedDate", bizAgencyContract.getSignedDate().toString());
dataMap.put("familyAddr", bizAgencyContract.getFamilyAddr());
dataMap.put("postalCode", bizAgencyContract.getPostalCode());
dataMap.put("firstContact", bizAgencyContract.getFirstContact());
dataMap.put("firstOfficeTel", bizAgencyContract.getFirstOfficeTel());
dataMap.put("faxNo", bizAgencyContract.getFaxNo());
dataMap.put("bankName", bizAgencyContract.getBankName());
dataMap.put("bankAcct", bizAgencyContract.getBankAcct());
dataMap.put("creditCode", bizAgencyContract.getCreditCode());
//Configuration 用於讀取ftl文件
Configuration configuration = new Configuration(new Version("2.3.0"));
configuration.setDefaultEncoding("utf-8");
/**
* 以下是兩種指定ftl文件所在目錄路徑的方式,注意這兩種方式都是
* 指定ftl文件所在目錄的路徑,而不是ftl文件的路徑
*/
//指定路徑的第一種方式(根據某個類的相對路徑指定)
// configuration.setClassForTemplateLoading(this.getClass(), "");
//指定路徑的第二種方式,我的路徑是C:/a.ftl
configuration.setDirectoryForTemplateLoading(new File(Global.getTemplatePath()));
Calendar date = Calendar.getInstance();
String year = String.valueOf(date.get(Calendar.YEAR));
String name = year + "年購售電代理合同.doc";
String filePath = Global.getTemplatePath() + "/" + name;
//輸出文檔路徑及名稱
File outFile = new File(filePath);
//以utf-8的編碼讀取ftl文件
Template template = configuration.getTemplate("agencyContract.ftl", "utf-8");
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8"), 10240);
template.process(dataMap, out);
out.close();
// String host = env.getProperty("Host");
// String uploadPath = env.getProperty("uploadPath");
// return host+uploadPath;
return name;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}