From ffba58e94255841604cd41048744ee9404d48fad Mon Sep 17 00:00:00 2001 From: canonical Date: Thu, 9 Nov 2023 20:19:53 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=E4=BF=AE=E6=AD=A3Excel=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=97=B6=E6=95=B0=E5=AD=97=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=B8=A2=E5=A4=B1=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_vfs/nop/test/imp/template4.test.xlsx | Bin 14871 -> 14998 bytes .../io/nop/biz/impl/test_imp4.test.xlsx | Bin 14228 -> 14328 bytes .../io/nop/core/model/table/ICellView.java | 4 + .../io/nop/core/unittest/BaseTestCase.java | 3 +- .../nop-quarkus-demo/reflect-config.json | 712 ++++++++++++++++++ .../java/io/nop/excel/model/ExcelCell.java | 9 +- .../io/nop/ooxml/xlsx/model/StylesPart.java | 2 +- .../ooxml/xlsx/output/ExcelSheetWriter.java | 2 +- .../nop/report/core/model/ExpandedCell.java | 8 +- 9 files changed, 733 insertions(+), 7 deletions(-) diff --git a/nop-biz/src/test/resources/_vfs/nop/test/imp/template4.test.xlsx b/nop-biz/src/test/resources/_vfs/nop/test/imp/template4.test.xlsx index 950492fdd0455759ebcb82ee2bca93dccb9f86a4..c65cf19d93d93aefc0c1dc8bddd6f2bd32202b19 100644 GIT binary patch delta 5957 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 delta 5864 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 B!(0FW diff --git a/nop-biz/src/test/resources/io/nop/biz/impl/test_imp4.test.xlsx b/nop-biz/src/test/resources/io/nop/biz/impl/test_imp4.test.xlsx index a5d071fb7920440691ad45e613583033750b6673..48a92fdd451347071351d5efac7a1b41cef1e1dc 100644 GIT binary patch delta 4889 zcmZXYXIK-;wuVEI-c1k?h*U{J7eW;fM5IUu=~AR9AXPwGXaOlA61sFDU;qidy6Mdz zAiejZ5PFxA>)z+yd+u}Y{F!-XzV$w{W`2BYCduv04ZA=_`eyvp6}3VJMMO!s^5`38 zQF5VIr6w!9-Uc4)!o)>EExUW;6ia_M{+m*YKcQ|JpzaU0`1 zF`!OBP}ZSFofBUWwT1fV6Uzp}6p)hEo3`(kBr%zZ-FLmXKm-W$j=to@5FwEo14Y! zH%!8d!4bW;OV_$0ZEz+66`a#J&TN0!yfG;BACP&D=W*X<&#QxGWL@Q8BVHq$t*qsVoE{w{_XZvGiGm0L8x0$ zz9znXdRe~F$iDEQ(x2ts3Vc=I>QFNJ-(jQQ$)1S2fG4@mwGNH!Z0k) z7U+9=KDo2AH)K_Z&xzuX=ByHY=9c!Pw;y#_iEu2FyFXGzh$R=m&%Ks~yu*}x58{8p zOlz6(J(7cPiJhyBo|>x?bj^K}sBMsM-;}Z&uWix5K}@WcFw?3n4Bxc1M|3H&?h@Tiy0TO11sH^!UnnHNAXTni@#1+Msn2Z zYqnKqNLfh{;F)`)>XBtSO-)PU=5A5@{sBX)&G(UsVcC!#AKF*Iqy4|;+EUgHKcdO! zJom_=uCZIEDih#c-&yPg{j60zxc-wUZFkm=Gza*#i|lqC&ox-e$w0y5La$QLE59Gf zeMF{Uzv1HZP~vC#{sPHgcNS7=Ca#_LZUF!U0tujsoa!+#<*0kr_m>m^fDg)qh6gb% z$`H8=JLV8vxVZr^g>#o;zBtuws*bJHc<^^}#~aLK8XnKdc`%toV^m{X?GghCiYw`Y zobed`08!&j{vtgFed2dRNEf)w)yZqgbOT!sH!7j#2Gak7cNz#J@QP$kIowyn73h05fpAH4rQK^+!8mxZptU@vhOD^m)j9pFOd{s2nS?l5 zh}hq9`*RIrH@GIop5PG%!MxjL8o(TuPEhDTev$c<9oO>Y?4>i@FTE>EFPu56LO5!AwT|$AI-AcU zXRfgD{sgADoI?Z2U2U2ULX1b9-jPb~kRO`Rd2F1?*+#`~DnXa1ZTOQ7J6q>jQL6yHDQgv`ur9sdsYdxLm0e;s_`dvftvd<=iGwYKq{aMCA;nc8Y1 zxCYgkKCQwj)}7XYzaP&`7?(N_(#LRXBdG-XiJ7(EBX@;&jJG!51W>+Hh|< zNkFn5x-c>-FA4!&PhEN%;5vh@vWKz^RUzXybpc1r^V}3L8Pt0@cl@8F+|^u8R)K!5 z+=%4}PoM@*5=wW#uuthcoserT@<#>#M^!xPULw4?)-I}*U_-%QDz;DN!@VJZNO~l2 zH!t&ZqRj#9L#Oxd)AR|q)ZL~!tkq{t1G98x^7k8JR!78{6|Q!JO%gl#~cZ|2sM`Mdew^b1>|)w zqClWjb>L-r!JeF&x=m+UVtcJ-Q6V-~=A{h&C7V!`<$yZQX2NUSb9f+`b|?Hq(zSgt zMTaqOV5Pxg}tn~)&26@=Rpshh|A3K*_Lqx0@wmkP2TeTV| z=lvf)6V(PM8@HRef6%P2JWR_Q=m?AeA+qQ8846B`XT(nuDl`NetQ!`UC~yY8;T|cL zk3#H8HQ35-Xs{&lN>}gC%S=aL#R^yO2wjLi zvIXd)=c;Q*euW-vr!sOOA<5O=cPA1Kc7}g(!YV!UyJF2Y9zk_ML|?CLv^W8TA1MrlRT;=E)3=) zs|twzS}A$1vB`R6vXP1k@h>vQ=3{L~CbzNEZ0sLwsYIzYa*ttrk*4!7UCg9Se{p_r zXEdwMn;j+qbS^6RI*TPq?^5{uElRmv^FgEP(Cg((wQI#$%c95N$C7#LPs&~$}3i1Bud>2 zZIG~tsCwa z;9YVHA-YQZ(uOJ$GBE(*i)p8&@I|^7-)1>^YBDPK#Xc(82xg*&cvI?+>3K>0sYiVF zxlNk2Dl*R5u(!UF1Pd~vOCGN81_oJFVc91H1siPrtSz=a3zrCKS#;sZY^ty!o@?E> zZg%C2@6~^Do2VR&;qcB$MuNV43N*ey=2(M_hDn*Rpbw#O%>hmu&leI_2d661|2bRRmE0+KtgomZ7EL zc3opWgZ`>%@BV#xhNsfN92!MJDR?+J+|7~2fatN`l2WFg?5?`L(*QQMT@w+1|IGFx zG*+OQ%m9)}&SJ`SdsQ|OisR^0?Yt?2%yu5`-Xjw!!KaPy(Ph!%Yf0vlA zS(&jC#EO5cjv@}!NjvMbSun4+ON|WsB_dC?Y#~K?iSwdnE0@i0E%e+r$7sr^N1*&R)UU6`Lw~;i;Yuy1Yv(a z6|8uDeArF-os~*?$eQkJ8E9Q|U3@YX$~n!rb^EdL;cK?+g2(yTy-tsDjr`C=Y@`hs zAHCdqyCarC5wTFVe&+$bR*uM%(enIL2_=~7*cLrSP?QNx*O6?Al=vsn=$W^UOMGO< z+wNTU*syP&4?*=BXreB3glTNx6r5&7W1^|iwwUcwHDiYK0Vyx(Xs~st&J(<@WQg26 z94|MCZZ%Ot-#gK~lCc{p0R+Vc^dHzK!Quj~YcY|Eii$W)=vm+@olDBk*CXuW@VD zp~+G<-4YRDLvPypIfxn|FM?23^MrFAekg4q&bE{W0b)MjFXg!>KfpB$Yu`_{uAC5k zqjBcF&xgyF0Zarlbh+31hEPd=BNW zTivzORyilHey|!AvEeIfPjn;$zAkARJ8adXiE7^1j!rsGJpD{&K7Etd+i_u-QxD!` z$f!+Jgg(v@&*$iCaivVUcvN%mye80MX0s5!iV!8=f2pojvIdRC1v2;7U|&uCsTaUC zyAF&v-(^{HY^Kxcc8tzal`f)FBD3PN9#Q%K87kC$~DKa6CIj0rM>qMFEqA(jR2=QhkEVsU|wraB~i7^j23M~KRxTcdi%7# z%d8WJe8 zoewD`s5hqdDL}QhN|17GZPJa5$$dkf=hMMBGm6kB$FQDIGaFmTK8cVsKjmN=;wqkQ zYcEZFnnroBV6m&9ly~b@{0or{l$vROr-Euym*7sE0M5m{i~~+zjx0=jsW$V;?9qHU zP|yyX<590v%Iva4TEF};wYgWf)=`MGTlPV?<F{Z7T23%~s9mBGia7#>LC}A5L5gG_~Iza~ZD+u`-=}L>)C>rbyR$ zbdLMk$R_w~cFWmwcjRrSl2*<$th291l%-I_+>cm>SAA{eSc+byz(W^r`&s$hC1qda zH*2fmoHqhA{eAOWWB` z9R;>5Bb_wGM^1mp*^HTGtFtdGe63qIwq1QZZt`^WV?5j+{r;H7C#YwuyRtywa#@_D z{8YfBLZ$hkadbpw*&SZLx%P;p$I2Qa$@Byg6cH7$iiDqzf^x7-+02p%0I;uO6XqsD zJkjnDWk8-jp5;1F@W>n*HdBWNkAjjD1c)oD@GqPht!bJk-pj|Hr4~aw2(vCOy^G_Jv$(=2$0vcCdXjx>?-a z6~h*XvL?|PPC1ZOgKfNwsaS*Q_CG?*=Y6d&j9;zACM{l=gRiVW(#kn9zvjrX*BJAEZyNUta{?;Uwta~&U0HR z8v=AM&IwE?30~f~p2M>wG)V^U{bi|KCogbt+%ok)=ba*IP4cgQrQi2L|Id>;LgFdW z5^7dLl~|e;^?((Gl9puP|4-ZhIqzeSObb;ghEiIa44~!;GZEc>JkpR{lAw_3;;0x5C5Ou1SKe? RK!is*OYx8m-TQm$zX00BNo@cC delta 4791 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 Cw&wr< diff --git a/nop-core/src/main/java/io/nop/core/model/table/ICellView.java b/nop-core/src/main/java/io/nop/core/model/table/ICellView.java index f59a197b5..61f52831b 100644 --- a/nop-core/src/main/java/io/nop/core/model/table/ICellView.java +++ b/nop-core/src/main/java/io/nop/core/model/table/ICellView.java @@ -81,6 +81,10 @@ default int getRowSpan() { */ Object getValue(); + default boolean isExportFormattedValue(){ + return false; + } + default Object getFormattedValue() { return getValue(); } diff --git a/nop-core/src/main/java/io/nop/core/unittest/BaseTestCase.java b/nop-core/src/main/java/io/nop/core/unittest/BaseTestCase.java index 649b0d639..138dc093b 100644 --- a/nop-core/src/main/java/io/nop/core/unittest/BaseTestCase.java +++ b/nop-core/src/main/java/io/nop/core/unittest/BaseTestCase.java @@ -155,7 +155,8 @@ public void setTargetDir(File targetDir) { } public File attachmentFile(String name) { - return new File(attachmentDir(), name); + File file = new File(attachmentDir(), name); + return file; } public File attachmentDir() { diff --git a/nop-demo/nop-quarkus-demo/src/main/resources/META-INF/native-image/io.nop.demo/nop-quarkus-demo/reflect-config.json b/nop-demo/nop-quarkus-demo/src/main/resources/META-INF/native-image/io.nop.demo/nop-quarkus-demo/reflect-config.json index 03531ef54..772f3d35f 100644 --- a/nop-demo/nop-quarkus-demo/src/main/resources/META-INF/native-image/io.nop.demo/nop-quarkus-demo/reflect-config.json +++ b/nop-demo/nop-quarkus-demo/src/main/resources/META-INF/native-image/io.nop.demo/nop-quarkus-demo/reflect-config.json @@ -6084,6 +6084,65 @@ "name": "io.nop.auth.core.model.ActionAuthModel", "unsafeAllocated": false }, + { + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "allPublicMethods": true, + "fields": [], + "methods": [], + "name": "io.nop.auth.core.model.DataAuthModel", + "unsafeAllocated": false + }, + { + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "allPublicMethods": true, + "fields": [], + "methods": [ + { + "name": "getFilter", + "parameterTypes": [ + "java.lang.String", + "io.nop.api.core.auth.ISecurityContext" + ] + }, + { + "name": "isPermitted", + "parameterTypes": [ + "java.lang.String", + "java.lang.Object", + "io.nop.api.core.auth.ISecurityContext" + ] + } + ], + "name": "io.nop.auth.core.model.ObjDataAuthModel", + "unsafeAllocated": false + }, + { + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "allPublicMethods": true, + "fields": [], + "methods": [ + { + "name": "mergeChecker", + "parameterTypes": [ + "io.nop.core.lang.eval.IEvalPredicate" + ] + }, + { + "name": "mergeFilter", + "parameterTypes": [ + "io.nop.core.lang.xml.IXNodeGenerator" + ] + } + ], + "name": "io.nop.auth.core.model.RoleDataAuthModel", + "unsafeAllocated": false + }, { "allDeclaredConstructors": true, "allDeclaredMethods": true, @@ -6179,6 +6238,217 @@ "name": "io.nop.auth.core.model._gen._ActionAuthModel", "unsafeAllocated": false }, + { + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "allPublicMethods": true, + "fields": [], + "methods": [ + { + "name": "addObj", + "parameterTypes": [ + "io.nop.auth.core.model.ObjDataAuthModel" + ] + }, + { + "name": "freeze", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "getObj", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "getObjs", + "parameterTypes": [] + }, + { + "name": "hasObj", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "hasObjs", + "parameterTypes": [] + }, + { + "name": "keySet_objs", + "parameterTypes": [] + }, + { + "name": "outputJson", + "parameterTypes": [ + "io.nop.core.lang.json.IJsonHandler" + ] + }, + { + "name": "setObjs", + "parameterTypes": [ + "java.util.List" + ] + } + ], + "name": "io.nop.auth.core.model._gen._DataAuthModel", + "unsafeAllocated": false + }, + { + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "allPublicMethods": true, + "fields": [], + "methods": [ + { + "name": "addRoleAuth", + "parameterTypes": [ + "io.nop.auth.core.model.RoleDataAuthModel" + ] + }, + { + "name": "freeze", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "getDisplayName", + "parameterTypes": [] + }, + { + "name": "getName", + "parameterTypes": [] + }, + { + "name": "getRoleAuth", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "getRoleAuths", + "parameterTypes": [] + }, + { + "name": "hasRoleAuth", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "hasRoleAuths", + "parameterTypes": [] + }, + { + "name": "keySet_roleAuths", + "parameterTypes": [] + }, + { + "name": "outputJson", + "parameterTypes": [ + "io.nop.core.lang.json.IJsonHandler" + ] + }, + { + "name": "setDisplayName", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "setName", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "setRoleAuths", + "parameterTypes": [ + "java.util.List" + ] + } + ], + "name": "io.nop.auth.core.model._gen._ObjDataAuthModel", + "unsafeAllocated": false + }, + { + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "allPublicMethods": true, + "fields": [], + "methods": [ + { + "name": "freeze", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "getCheck", + "parameterTypes": [] + }, + { + "name": "getDescription", + "parameterTypes": [] + }, + { + "name": "getFilter", + "parameterTypes": [] + }, + { + "name": "getPriority", + "parameterTypes": [] + }, + { + "name": "getRoleId", + "parameterTypes": [] + }, + { + "name": "outputJson", + "parameterTypes": [ + "io.nop.core.lang.json.IJsonHandler" + ] + }, + { + "name": "setCheck", + "parameterTypes": [ + "io.nop.core.lang.eval.IEvalPredicate" + ] + }, + { + "name": "setDescription", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "setFilter", + "parameterTypes": [ + "io.nop.core.lang.xml.IXNodeGenerator" + ] + }, + { + "name": "setPriority", + "parameterTypes": [ + "int" + ] + }, + { + "name": "setRoleId", + "parameterTypes": [ + "java.lang.String" + ] + } + ], + "name": "io.nop.auth.core.model._gen._RoleDataAuthModel", + "unsafeAllocated": false + }, { "allDeclaredConstructors": true, "allDeclaredMethods": true, @@ -22555,6 +22825,63 @@ "name": "io.nop.core.model.validator._gen._ValidatorModel", "unsafeAllocated": false }, + { + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "allPublicMethods": true, + "fields": [ + { + "allowUnsafeAccess": false, + "allowWrite": false, + "name": "LOG" + }, + { + "allowUnsafeAccess": false, + "allowWrite": false, + "name": "_instance" + } + ], + "methods": [ + { + "name": "clear", + "parameterTypes": [] + }, + { + "name": "discover", + "parameterTypes": [] + }, + { + "name": "findModuleResources", + "parameterTypes": [ + "java.lang.String", + "java.lang.String" + ] + }, + { + "name": "getAllModuleResources", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "getEnabledModuleIds", + "parameterTypes": [] + }, + { + "name": "getModuleResource", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "instance", + "parameterTypes": [] + } + ], + "name": "io.nop.core.module.ModuleManager", + "unsafeAllocated": false + }, { "allDeclaredConstructors": true, "allDeclaredMethods": true, @@ -23635,6 +23962,37 @@ "name": "io.nop.core.resource.ResourceHelper", "unsafeAllocated": false }, + { + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "allPublicMethods": true, + "fields": [], + "methods": [ + { + "name": "instance", + "parameterTypes": [] + }, + { + "name": "isInitialized", + "parameterTypes": [] + }, + { + "name": "registerInstance", + "parameterTypes": [ + "io.nop.core.resource.IVirtualFileSystem" + ] + }, + { + "name": "unregisterInstance", + "parameterTypes": [ + "io.nop.core.resource.IVirtualFileSystem" + ] + } + ], + "name": "io.nop.core.resource.VirtualFileSystem", + "unsafeAllocated": false + }, { "allDeclaredConstructors": true, "allDeclaredMethods": true, @@ -24470,6 +24828,84 @@ "name": "io.nop.core.resource.impl.UnknownResource", "unsafeAllocated": false }, + { + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "allPublicMethods": true, + "fields": [], + "methods": [ + { + "name": "destroy", + "parameterTypes": [] + }, + { + "name": "getChildren", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "getClassPathResources", + "parameterTypes": [] + }, + { + "name": "getRawResource", + "parameterTypes": [ + "java.lang.String", + "boolean" + ] + }, + { + "name": "getResource", + "parameterTypes": [ + "java.lang.String", + "boolean" + ] + }, + { + "name": "refresh", + "parameterTypes": [ + "boolean" + ] + }, + { + "name": "registerNamespaceHandler", + "parameterTypes": [ + "io.nop.core.resource.IResourceNamespaceHandler" + ] + }, + { + "name": "saveResource", + "parameterTypes": [ + "java.lang.String", + "io.nop.core.resource.IResource", + "io.nop.api.core.util.progress.IStepProgressListener", + "java.util.Map" + ] + }, + { + "name": "setTenantResourceStoreSupplier", + "parameterTypes": [ + "io.nop.core.resource.store.ITenantResourceStoreSupplier" + ] + }, + { + "name": "supportSave", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "unregisterNamespaceHandler", + "parameterTypes": [ + "io.nop.core.resource.IResourceNamespaceHandler" + ] + } + ], + "name": "io.nop.core.resource.store.DefaultVirtualFileSystem", + "unsafeAllocated": false + }, { "allDeclaredConstructors": true, "allDeclaredMethods": true, @@ -61522,6 +61958,103 @@ "name": "java.util.Map", "unsafeAllocated": false }, + { + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "allPublicMethods": true, + "fields": [], + "methods": [ + { + "name": "ceiling", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "descendingIterator", + "parameterTypes": [] + }, + { + "name": "descendingSet", + "parameterTypes": [] + }, + { + "name": "floor", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "headSet", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "headSet", + "parameterTypes": [ + "java.lang.Object", + "boolean" + ] + }, + { + "name": "higher", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "iterator", + "parameterTypes": [] + }, + { + "name": "lower", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "pollFirst", + "parameterTypes": [] + }, + { + "name": "pollLast", + "parameterTypes": [] + }, + { + "name": "subSet", + "parameterTypes": [ + "java.lang.Object", + "boolean", + "java.lang.Object", + "boolean" + ] + }, + { + "name": "subSet", + "parameterTypes": [ + "java.lang.Object", + "java.lang.Object" + ] + }, + { + "name": "tailSet", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "tailSet", + "parameterTypes": [ + "java.lang.Object", + "boolean" + ] + } + ], + "name": "java.util.NavigableSet", + "unsafeAllocated": false + }, { "allDeclaredConstructors": true, "allDeclaredMethods": true, @@ -61756,5 +62289,184 @@ ], "name": "java.util.Set", "unsafeAllocated": false + }, + { + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "allPublicMethods": true, + "fields": [], + "methods": [ + { + "name": "comparator", + "parameterTypes": [] + }, + { + "name": "first", + "parameterTypes": [] + }, + { + "name": "headSet", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "last", + "parameterTypes": [] + }, + { + "name": "subSet", + "parameterTypes": [ + "java.lang.Object", + "java.lang.Object" + ] + }, + { + "name": "tailSet", + "parameterTypes": [ + "java.lang.Object" + ] + } + ], + "name": "java.util.SortedSet", + "unsafeAllocated": false + }, + { + "allDeclaredConstructors": true, + "allDeclaredMethods": true, + "allPublicConstructors": true, + "allPublicMethods": true, + "fields": [], + "methods": [ + { + "name": "ceiling", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "clear", + "parameterTypes": [] + }, + { + "name": "comparator", + "parameterTypes": [] + }, + { + "name": "contains", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "descendingIterator", + "parameterTypes": [] + }, + { + "name": "descendingSet", + "parameterTypes": [] + }, + { + "name": "first", + "parameterTypes": [] + }, + { + "name": "floor", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "headSet", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "headSet", + "parameterTypes": [ + "java.lang.Object", + "boolean" + ] + }, + { + "name": "higher", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "isEmpty", + "parameterTypes": [] + }, + { + "name": "iterator", + "parameterTypes": [] + }, + { + "name": "last", + "parameterTypes": [] + }, + { + "name": "lower", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "pollFirst", + "parameterTypes": [] + }, + { + "name": "pollLast", + "parameterTypes": [] + }, + { + "name": "remove", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "size", + "parameterTypes": [] + }, + { + "name": "spliterator", + "parameterTypes": [] + }, + { + "name": "subSet", + "parameterTypes": [ + "java.lang.Object", + "boolean", + "java.lang.Object", + "boolean" + ] + }, + { + "name": "subSet", + "parameterTypes": [ + "java.lang.Object", + "java.lang.Object" + ] + }, + { + "name": "tailSet", + "parameterTypes": [ + "java.lang.Object" + ] + }, + { + "name": "tailSet", + "parameterTypes": [ + "java.lang.Object", + "boolean" + ] + } + ], + "name": "java.util.TreeMap$KeySet", + "unsafeAllocated": false } ] \ No newline at end of file diff --git a/nop-excel/src/main/java/io/nop/excel/model/ExcelCell.java b/nop-excel/src/main/java/io/nop/excel/model/ExcelCell.java index 9ab300ef1..34fb4ea45 100644 --- a/nop-excel/src/main/java/io/nop/excel/model/ExcelCell.java +++ b/nop-excel/src/main/java/io/nop/excel/model/ExcelCell.java @@ -7,7 +7,6 @@ */ package io.nop.excel.model; -import io.nop.core.model.table.CellPosition; import io.nop.excel.model._gen._ExcelCell; public class ExcelCell extends _ExcelCell { @@ -90,4 +89,10 @@ public ExcelCell cloneInstance() { cell.setId(getId()); return cell; } -} + + @Override + public boolean isExportFormattedValue() { + XptCellModel model = getModel(); + return model != null ? model.isExportFormattedValue() : false; + } +} \ No newline at end of file diff --git a/nop-ooxml/nop-ooxml-xlsx/src/main/java/io/nop/ooxml/xlsx/model/StylesPart.java b/nop-ooxml/nop-ooxml-xlsx/src/main/java/io/nop/ooxml/xlsx/model/StylesPart.java index ebcb9027d..e53ed47d4 100644 --- a/nop-ooxml/nop-ooxml-xlsx/src/main/java/io/nop/ooxml/xlsx/model/StylesPart.java +++ b/nop-ooxml/nop-ooxml-xlsx/src/main/java/io/nop/ooxml/xlsx/model/StylesPart.java @@ -158,7 +158,7 @@ public XNode buildXml(IEvalContext context) { } private void addNumberFormats(XNode node, Map numberFormats) { - if (numberFormats.size() > 0) + if (numberFormats.isEmpty()) return; XNode fmts = node.addChild("numFmts"); diff --git a/nop-ooxml/nop-ooxml-xlsx/src/main/java/io/nop/ooxml/xlsx/output/ExcelSheetWriter.java b/nop-ooxml/nop-ooxml-xlsx/src/main/java/io/nop/ooxml/xlsx/output/ExcelSheetWriter.java index 4f2899815..0c29e924b 100644 --- a/nop-ooxml/nop-ooxml-xlsx/src/main/java/io/nop/ooxml/xlsx/output/ExcelSheetWriter.java +++ b/nop-ooxml/nop-ooxml-xlsx/src/main/java/io/nop/ooxml/xlsx/output/ExcelSheetWriter.java @@ -159,7 +159,7 @@ void genCells(IXNodeHandler out, int rowIndex, IRowView row) { String cellType = null; // 优先输出格式化后的值 - Object value = ec.getFormattedValue(); + Object value = ec.isExportFormattedValue() ? ec.getFormattedValue() : ec.getValue(); String str = null; if (value instanceof Boolean) { diff --git a/nop-report/nop-report-core/src/main/java/io/nop/report/core/model/ExpandedCell.java b/nop-report/nop-report-core/src/main/java/io/nop/report/core/model/ExpandedCell.java index b9113e1d3..973068ca0 100644 --- a/nop-report/nop-report-core/src/main/java/io/nop/report/core/model/ExpandedCell.java +++ b/nop-report/nop-report-core/src/main/java/io/nop/report/core/model/ExpandedCell.java @@ -8,9 +8,7 @@ package io.nop.report.core.model; import com.fasterxml.jackson.annotation.JsonIgnore; -import io.nop.api.core.annotations.lang.EvalMethod; import io.nop.api.core.util.Guard; -import io.nop.core.lang.eval.IEvalScope; import io.nop.core.lang.utils.Underscore; import io.nop.core.model.table.ICellView; import io.nop.excel.model.XptCellModel; @@ -86,6 +84,12 @@ public Object getComputed(String key, Function fn) { return computedValues.computeIfAbsent(key, k -> fn.apply(this)); } + @Override + public boolean isExportFormattedValue() { + if (model == null) + return false; + return model.isExportFormattedValue(); + } /** * 标记colSpan和rowSpan范围内的所有单元格的realCell为当前单元格。