我需要的是一个使用jstl的jsp,它将列标签输出为Chars(A,B,C ...)而不是ints(1,2,3 ......),只是为了好玩,当int是如果大于26,则输出AA,AB,AC ...哦,当int大于52时,它应该是BA,BB,BC ......并且一直打开。
excel如何标记列。
我现在的工作正常,直到索引达到27。
<c:forEach var="column" items="${vo.dataFormat.columns}" varStatus="loopStatus">
<div class="columnLabel">&#${loopStatus.index + 65};</div>
</c:forEach>
感谢任何帮助。
答案 0 :(得分:1)
您的初始要求..., X, Y, Z, AA, BB, CC, ...
很简单:
<c:forEach items="${vo.dataFormat.columns}" var="column" varStatus="loop">
<div class="columnLabel">
<c:forEach begin="1" end="${loop.index / 26 + 1}">
&#${loop.index % 26 + 65};
</c:forEach>
</div>
</c:forEach>
您编辑的要求..., X, Y, Z, AA, AB, AC, ...
更棘手。这只适用于ZZ:
<c:forEach items="${vo.dataFormat.columns}" var="column" varStatus="loop">
<div class="columnLabel">
<c:set var="i" value="${fn:substringBefore(loop.index / 26, '.')}" />
<c:if test="${i > 0}">
&#${i + 64};
</c:if>
&#${loop.index % 26 + 65};
</div>
</c:forEach>
由于JSTL中没有while
循环,因此无法使用干净的代码从ZZ进入AAA等等。