国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

網(wǎng)站解析游戲合作渠道

網(wǎng)站解析,游戲合作渠道,快樂彩網(wǎng)站做,網(wǎng)站切換圖片做背景怎么寫簡介 相信大家能經(jīng)常性的遇到項目上各類excel的導(dǎo)出,簡單的excel格式,用簡單的poi,easyExcel等工具都能導(dǎo)出。但是針對復(fù)雜的excel,有固定的樣式、合并單元格、動態(tài)列等各類要求,導(dǎo)致excel 導(dǎo)出需要花很大一部分精力去…

簡介

相信大家能經(jīng)常性的遇到項目上各類excel的導(dǎo)出,簡單的excel格式,用簡單的poi,easyExcel等工具都能導(dǎo)出。但是針對復(fù)雜的excel,有固定的樣式、合并單元格、動態(tài)列等各類要求,導(dǎo)致excel 導(dǎo)出需要花很大一部分精力去寫代碼。jxls在很大程度上解決了以上問題。

這里簡單介紹下jxls,JXLS是國外一個簡單的、輕量級的excel導(dǎo)出庫,鏈接:JXLS官網(wǎng),這里有詳細的文檔說明教程(英文版),為了方便大家使用,我舉例幾個常見的excel模板配置,方便大家使用。

引入maven依賴

<!-- 版本具體看官網(wǎng)Release,這里我們使用 2.11.0 -->
<dependency><groupId>org.jxls</groupId><artifactId>jxls</artifactId><version>2.11.0</version>
</dependency>
<dependency><groupId>org.jxls</groupId><artifactId>jxls-poi</artifactId><version>2.11.0</version>
</dependency><!-- 要使用基于JavaExcelAPI的轉(zhuǎn)換器實現(xiàn),請?zhí)砑右韵乱蕾図?-->
<dependency><groupId>org.jxls</groupId><artifactId>jxls-jexcel</artifactId><version>${jxlsJexcelVersion}</version>
</dependency>

后臺代碼

工具類:JxlsUtils,導(dǎo)出靜態(tài)方法

public static void exportExcel(InputStream is, OutputStream os, Map<String, Object> model) throws IOException {Context context = new Context();if (model != null) {for (String key : model.keySet()) {context.putVar(key, model.get(key));}}JxlsHelper jxlsHelper = JxlsHelper.getInstance();Transformer transformer = jxlsHelper.createTransformer(is, os);JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator) transformer.getTransformationConfig().getExpressionEvaluator();Map<String, Object> funcs = new HashMap<String, Object>();funcs.put("utils", new JxlsUtils()); // 添加自定義功能evaluator.setJexlEngine(new JexlBuilder().namespaces(funcs).create());jxlsHelper.processTemplate(context, transformer);}
導(dǎo)出controller
//導(dǎo)出示例Controller
@PostMapping("/export/exportTradeCreditData")
@ResponseBody
public void exportTradeCreditData(HttpServletRequest request, HttpServletResponse response, Date countDate) {String templatePath = "template/excel/trade_credit_data.xlsx";//查找模板文件路徑,這里PathTools類為系統(tǒng)內(nèi)部封裝類,大家注意copyURL templateResource = PathTools.findResource(templatePath);try (OutputStream out = response.getOutputStream();InputStream templateStream = templateResource.openStream();) {//業(yè)務(wù)數(shù)據(jù)查詢List<CindaTradeCreditDto> list = countingReportService.queryTradeCreditData(countDate);//excel模板內(nèi),數(shù)據(jù)組裝Map<String, Object> map = new HashMap<String, Object>();map.put("year", getYear(countDate));map.put("contracts", list);JxlsUtils.exportExcel(templateStream, out, map);out.close();}  catch (Exception e) {e.printStackTrace();log.error("導(dǎo)出excel異常, {}", JxlsUtils.executeException(e));}}

創(chuàng)建模板

注意事項:excel模板工作表要使用xlsx格式,不要使用xls格式,防止導(dǎo)出時數(shù)據(jù)轉(zhuǎn)換出錯

  • ?新建excel模板,xlsx格式
  • 工作表中按照的導(dǎo)出要求,設(shè)置表格樣式
  • 僅限于簡單的表頭與行、列的寬度、高度
  • 編寫寫表達式,在工作表中右鍵插入批注,office中添加批注快捷鍵(Shit + F2)
  • 設(shè)置區(qū)域、數(shù)據(jù)行、合并單元格、動態(tài)列等

XLS表達式

簡單列舉常用的幾個表達式

jx:area

jx:area(lastCell = "H3")

?XLS Area 是JxlsPlus中的一個重要概念,它表明excel模板中須要被解析的矩形區(qū)域,由A1到最后一個單元格表示,有利于加快解析速度。它須要被定義在excel 模板的第一個單元格(A1).

示例圖:

?

?

?jx:each 最常用的xls表達式

jx:each(items="contracts" var="contract" lastCell="H3")

  • items:上下文中集合的變量名;
  • var: 在遍歷集合的時候每一條記錄的變量名;
  • area: 該XLS Command的解析區(qū)域;
  • direction: 數(shù)據(jù)在excel中填充的方向,默認(DOWN)向下;
  • select: 其值為一個表達式,用來過濾數(shù)據(jù)

注:如果涉及到動態(tài)列,橫向遍歷,需注意其用法,特別需注意動態(tài)列的數(shù)據(jù)顯示問題,下面會講到:

jx:each(items="countMonths" var="month" lastCell="C3" direction="RIGHT")

?簡單的示例圖:

復(fù)雜的示例圖:

?

jx:mergeCells 合并單元格

jx:mergeCells(lastCell="合并單元格范圍"
[, cols="合并的列數(shù)"]
[, rows="合并的行數(shù)"]
[, minCols="要合并的最小列數(shù)"]
[, minRows="要合并的最小行數(shù)"]
)
  • lastCell:合并單元格范圍;
  • cols:合并的列數(shù);
  • rows:合并的行數(shù);
  • minCols:要合并的最小列數(shù);
  • minRows:要合并的最小行數(shù);

注意:此命令只能用于還沒有合并的單元格。

?示例圖:

?動態(tài)列-綜合使用

jx:each(items="countMonths" var="month" lastCell="C3" direction="RIGHT")

?這里還是通過jx:each來使用,不同的是direction 屬性的值為:RIGHT(向右),默認為:DOWN(向下)。

示例截圖:

以上截圖中幾個參數(shù)說明:

countMonths:動態(tài)列集合,month為集合循環(huán)的實體,取值為:${month}

contracts:行數(shù)據(jù)集合,contract、colData 都是集合循環(huán)的實體,取值為:${contract.custName}等

colData.monthData.get(month):動態(tài)列的數(shù)據(jù),根據(jù)列名去匹配實體字段

${empty()}:判斷集合對應(yīng)動態(tài)列數(shù)據(jù) 是否為空,做好判斷,寫入數(shù)據(jù)

動態(tài)列數(shù)據(jù)行的數(shù)據(jù)獲取:

${empty(colData.monthData.get(month) ) ? 0 : colData.monthData.get(month)}

總結(jié)

以上為我使用過程中,幾個較常用的操作,關(guān)于復(fù)雜的動態(tài)列使用excel模板,詳見附件

http://m.aloenet.com.cn/news/40767.html

相關(guān)文章:

  • 做個素材網(wǎng)網(wǎng)站難做嗎nba最新新聞消息
  • 怎么給搞笑網(wǎng)站做文案推廣網(wǎng)站文案
  • 網(wǎng)站采集到wordpress優(yōu)化網(wǎng)站的公司哪家好
  • word怎么做網(wǎng)站鏈接seo交流中心
  • 百度安裝app東莞seo排名公司
  • 醫(yī)藥網(wǎng)站文案編輯是怎么做的百度seo霸屏軟件
  • 福建泉州網(wǎng)站建設(shè)網(wǎng)絡(luò)營銷推廣處點
  • 南皮網(wǎng)站建設(shè)站長工具域名
  • 中英互譯網(wǎng)站怎么做谷歌瀏覽器下載安裝2022
  • 怎么在導(dǎo)航網(wǎng)站上做推廣seo研究學(xué)院
  • wordpress怎么在上面建幾個分類seo網(wǎng)絡(luò)營銷外包
  • 企業(yè)網(wǎng)站開發(fā)模板windows優(yōu)化大師靠譜嗎
  • 欽州市建設(shè)工程質(zhì)量監(jiān)督站網(wǎng)站汕頭百度推廣公司
  • 貴港住房城鄉(xiāng)建設(shè)廳網(wǎng)站今日新聞聯(lián)播主要內(nèi)容
  • 西昌網(wǎng)站建設(shè)我想在百度上發(fā)布廣告怎么發(fā)
  • php建設(shè)網(wǎng)站工具百度搜索推廣流程
  • 私人訂制寧波受歡迎全網(wǎng)seo優(yōu)化
  • 網(wǎng)站建設(shè)的前景長沙優(yōu)化網(wǎng)站廠家
  • 建設(shè)網(wǎng)站需要哪些流程百度seo費用
  • 制造業(yè)人才網(wǎng)正規(guī)seo排名多少錢
  • 公眾平臺注冊網(wǎng)站怎么優(yōu)化搜索
  • 網(wǎng)站icp備案 年檢2345網(wǎng)址導(dǎo)航中國最好
  • 如何開發(fā)一個app建設(shè)一個網(wǎng)站關(guān)鍵詞搜索熱度查詢
  • 廣西搜索推廣東莞網(wǎng)絡(luò)優(yōu)化排名
  • 網(wǎng)站IcP在哪查今日剛剛發(fā)生的國際新聞
  • 哈爾濱網(wǎng)站建設(shè)1元錢2021年經(jīng)典營銷案例
  • 做企業(yè)網(wǎng)站的第一步需要啥紹興seo優(yōu)化
  • 四川seo整站優(yōu)化吧谷歌瀏覽器官方app下載
  • 國外做美食視頻網(wǎng)站谷歌海外推廣怎么做
  • 淄博網(wǎng)站建設(shè)推廣優(yōu)化自媒體賬號申請