From ee02e63e97a0a6069d07761a804e32c5a2227def Mon Sep 17 00:00:00 2001 From: jueyue Date: Wed, 29 Apr 2015 23:30:00 +0800 Subject: [PATCH] =?UTF-8?q?foreach=20=E7=9A=84styler=20=E5=A4=8D=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- .../entity/params/ExcelTemplateParams.java | 65 ++++++++++++++++++ .../template/ExcelExportOfTemplateUtil.java | 29 +++++--- .../poi/test/excel/doc/foreach.xlsx | Bin 9633 -> 9770 bytes 4 files changed, 86 insertions(+), 12 deletions(-) create mode 100644 easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelTemplateParams.java diff --git a/README.md b/README.md index e2b9be9..ed72131 100644 --- a/README.md +++ b/README.md @@ -143,8 +143,8 @@ EasyPoi 模板 表达式支持 - fn: 格式化数字 {{fn:(obj;###.00)}} - fe: 遍历数据,创建row - !fe: 遍历数据不创建row -- !if: 这一列是否加入,最好是第一个个有效行,删除可能营销其他数据 {{!if:(test)}} -- 单引号表示常量值 '' +- !if: 删除当前列 {{!if:(test)}} +- 单引号表示常量值 '' 比如'1' 那么输出的就是 1 --------------------------- diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelTemplateParams.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelTemplateParams.java new file mode 100644 index 0000000..994e82d --- /dev/null +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/entity/params/ExcelTemplateParams.java @@ -0,0 +1,65 @@ +package org.jeecgframework.poi.excel.entity.params; + +import java.io.Serializable; + +import org.apache.poi.ss.usermodel.CellStyle; + +/** + * 模板便利是的参数 + * @author JueYue + * @date 2015年4月29日 下午9:22:48 + */ +public class ExcelTemplateParams implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + /** + * key + */ + private String name; + /** + * 模板的cellStyle + */ + private CellStyle cellStyle; + /** + * 行高 + */ + private short height; + + public ExcelTemplateParams() { + + } + + public ExcelTemplateParams(String name, CellStyle cellStyle, short height) { + this.name = name; + this.cellStyle = cellStyle; + this.height = height; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public CellStyle getCellStyle() { + return cellStyle; + } + + public void setCellStyle(CellStyle cellStyle) { + this.cellStyle = cellStyle; + } + + public short getHeight() { + return height; + } + + public void setHeight(short height) { + this.height = height; + } + +} diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java index d8ada13..6c797eb 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java @@ -38,6 +38,7 @@ import org.jeecgframework.poi.excel.annotation.ExcelTarget; import org.jeecgframework.poi.excel.entity.TemplateExportParams; import org.jeecgframework.poi.excel.entity.enmus.ExcelType; import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; +import org.jeecgframework.poi.excel.entity.params.ExcelTemplateParams; import org.jeecgframework.poi.excel.export.base.ExcelExportBase; import org.jeecgframework.poi.excel.export.styler.IExcelExportStyler; import org.jeecgframework.poi.exception.excel.ExcelExportException; @@ -353,7 +354,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { .replace(START_STR, EMPTY); String[] keys = name.replaceAll("\\s{1,}", " ").trim().split(" "); Collection datas = (Collection) PoiPublicUtil.getParamsValue(keys[0], map); - List columns = getAllDataColumns(cell, name.replace(keys[0], EMPTY)); + List columns = getAllDataColumns(cell, name.replace(keys[0], EMPTY)); if (datas == null) { return; } @@ -363,6 +364,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { //处理当前行 if (its.hasNext()) { Object t = its.next(); + cell.getRow().setHeight(columns.get(0).getHeight()); setForEeachCellValue(isCreate, cell.getRow(), cell.getColumnIndex(), t, columns, map); } while (its.hasNext()) { @@ -375,20 +377,21 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { row = cell.getRow().getSheet().createRow(rowIndex - 1); } } + row.setHeight(columns.get(0).getHeight()); setForEeachCellValue(isCreate, row, cell.getColumnIndex(), t, columns, map); } } private void setForEeachCellValue(boolean isCreate, Row row, int columnIndex, Object t, - List columns, Map map) - throws Exception { + List columns, Map map) + throws Exception { for (int i = 0, max = columnIndex + columns.size(); i < max; i++) { if (row.getCell(i) == null) row.createCell(i); } for (int i = 0, max = columns.size(); i < max; i++) { boolean isNumber = false; - String tempStr = new String(columns.get(i)); + String tempStr = new String(columns.get(i).getName()); if (isNumber(tempStr)) { isNumber = true; tempStr = tempStr.replace(NUMBER_SYMBOL, ""); @@ -398,8 +401,10 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { if (isNumber) { row.getCell(i + columnIndex).setCellValue(Double.parseDouble(val)); row.getCell(i + columnIndex).setCellType(Cell.CELL_TYPE_NUMERIC); + row.getCell(i + columnIndex).setCellStyle(columns.get(i).getCellStyle()); } else { row.getCell(i + columnIndex).setCellValue(val); + row.getCell(i + columnIndex).setCellStyle(columns.get(i).getCellStyle()); } tempCreateCellSet.add(row.getRowNum() + "_" + (i + columnIndex)); } @@ -412,14 +417,16 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { * @param name * @return */ - private List getAllDataColumns(Cell cell, String name) { - List columns = new ArrayList(); + private List getAllDataColumns(Cell cell, String name) { + List columns = new ArrayList(); if (name.contains(END_STR)) { - columns.add(name.replace(END_STR, EMPTY)); + columns.add(new ExcelTemplateParams(name.replace(END_STR, EMPTY), cell.getCellStyle(), + cell.getRow().getHeight())); cell.setCellValue(""); return columns; } - columns.add(name.trim()); + columns.add(new ExcelTemplateParams(name.trim(), cell.getCellStyle(), cell.getRow() + .getHeight())); int index = cell.getColumnIndex(); Cell tempCell; while (true) { @@ -439,11 +446,13 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { //把读取过的cell 置为空 cell.setCellValue(""); if (cellStringString.contains(END_STR)) { - columns.add(cellStringString.trim().replace(END_STR, "")); + columns.add(new ExcelTemplateParams(cellStringString.trim().replace(END_STR, ""), + tempCell.getCellStyle(), tempCell.getRow().getHeight())); break; } else { if (cellStringString.trim().contains(teplateParams.getTempParams())) { - columns.add(cellStringString.trim()); + columns.add(new ExcelTemplateParams(cellStringString.trim(), tempCell + .getCellStyle(), tempCell.getRow().getHeight())); } else { //最后一行被删除了 break; diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/doc/foreach.xlsx b/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/doc/foreach.xlsx index bc13fc69c639e2240ae0e5e9f6b78e7a28b94dd9..a1af1b2fac1648545793fc5f20dea07a94b6caa0 100644 GIT binary patch delta 3133 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 delta 3011 zcmZ9OXHXMr7KTF*2%%$;E*&v+gwT{0N`Qz7h#(;pk!GSIpdf;gUIjuZp(_YVm#Rn+ z0i{YP3erVTO6Z|UUGLqyJG1-EnfYeUdH$Vw&pgG*=jN|l!3-{n-t!1j2Uv{Yj2qJ9 z>zHPF9Ek}WV8;*oiVKjEmHC&SM)h)VdXH>N*2mUU?d3z8$Qs1O_GlmYYx**k1;+b# z>N=a_JO}U2kggdSn9m`2bCnW?V_6y-6c%2VJi1aRhSe?(Wi&l% zP%geF&8s9coQO9TjoZ-ddrXLOds|0zzXEETogbYMv=T<6O?qERlot_1t7f+chHTnu zEq1nPWLnyl{GDCjicI|N!t8unrEf!;aE{)R$H~#}Z|iNIgOf*o_?fzxu@^LfIhpHq z!=^Cyt03Jg>ZGSlH~Zgrh!iwXX+n0R6^@tRZw>kBI<=nDPt3Z+U(3{{uYE8~d&tS@ zxD=uzeT%9Sdh4b;#&egj@*>pQqbxOA=w=?&EZ%|L&p}j{fH*ktxNjXU$a(*^+5({&+!%_oq^dPs4VWjzFHpreOlp2dkx#~R)ZrpvUtXFF-9PW})RnWcf0A{7+0 zsOa^Uf_hDZevG`K=n?`4UV8VQ$BdLTJ1EuRGZ4MEdEITk3Q#>hNN+KeeW9B!$BqpdC^lC zUNn)&(O=J8P=5%FzlyOV`GnjX~>L~5JL0xtNryFCTXqNzESWAx5(N=siyGc5jGp} zqQR1}XNtNhyXRz)uphLekkR(tqnQ4RwP^z3=*xgh-3ugoBdwT@JbDWgX+PO0Gx;b3 zTuTJrx+&RVURVyxX^}XdpJC{M{o-wuA5Rv?si6~@=hn(OUUiP}4H3X!!DN=V<_hZhlgU<+D8B?D z9|n26hCHFq-(?6rt-ZsyhF|t4r9UVf+S-&0eXT}kD5Yt!Pd#A1_a^hTBB<}DwvBM# z5*3rGRe^*mY$oolhH1zp81~ZOh~q<--JkIqWzy+4Us`Qde(}3?O!cO@kT($W%|uQYBKBl`)CS=rX} zlLNjdy_RP@&*WRQ59IBIO9iwIs!HyPl0%lm{gpGWB&N4SK-J>d1U!$sOSdFmeAO+m zZfwmPAul(N{PJ^UCXg(8xdY6$*M1y!?#;ZK>G;xQWQn|!x^a+N1TqTt9C@$ymWZGW zc}coAghfDuWGNRCwv{D^>Zt@Ky(kN_*yX$Ca@bqRA!f|(1#^^%#Y2|@&w{XOOR)6n zIW6@R_C7QBjUu1*yf~2iZTAgl)oL?3cj3>i*+EGm5C3rJ{eJK&e(_A7o%5=L`j1h8 z6t>p|8Ra&XS;F>4LlO*XyyK3*`GBWrdx?Y3Ab5X`D*__0c7KIQmaxXN0xCj)7M9VMrHs_EWJDi(-Y+N~(iw{R z&xvrw`%Qxccd3Mk`ZrkCIkj^uz&LS# zBc5+2aiW&LGR!EGDCUe~);XqLzCCt!p`iV6(PY{m^rrR>yxK3X<4^=gCe4=VzpZ_s z?J=Wp!6Uut8}d+BsqfwBrhA+I@J~kiRk-31y^Y_cUwQ=EqlAabqwkF8M=)Kz(;}cM z^)d_s(>f)`!8j4A-0j#DE3j9W2~d|!l!9t^bbD8+u+HO) zY_+4s>sHFL7P8F_JSNLk87AL6xrw-HdH(7(hBHm}ctZ#IcH_!tOgpkEOgXaWKDN5n z3EJa4c@fVxg-dKrKW0y}JT)pj*19q2y61V>p0(2uge6>kOF`y>Up`|XQ4SsXOk`QQ zD&Z*ycm!Ci_Jw`hR8pJyZ^*bu#>%6ke@B}krsDP+-D-JZX*vSdyiExbvBq!$?+VI% z;OOC@jT%j%{}A&7i|BjjMAPS9*;%_hUiLsK%!fp4e%O}@-`v)R4RF|=tAV0YU&sJI zs`3^q^kZtH*HCj8t+QZu`oZzv``B$9FHUw&FMy_i; zcO*1rbt&8-U87*#U6i!-{4|Hb_a D3MP&0