IDEA中JavaExcel和Word文件導出下載


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支持多種模板裝載方法。可以重servletclasspath,數據庫裝載,

        // 這里我的模板是放在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;
}

}
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM