您好,我目前正在使用 JSTL 将字符串列表导出到 Excel
我正在遍历要导出的值列表,即使当我的 excel 页面上有“001”之类的内容时这些值被定义为字符串,我也会得到“1”,但相同的列表包含“XXX”之类的值,因此我想excel 会足够聪明,知道我有一个字符串列表而不是数字列表。
我的第一个解决方法是为每个值添加一个尾随空格,但这不是一个优雅的解决方案。
告诉 excel 我的 List 由字符串组成并导出列表中的值的最佳方法是什么?
这是我目前正在做的一个示例:
我找到了一个可行的解决方案,实际上可以通过 CSS 格式化 excel 单元格,在我的情况下,将具有以下格式的 CSS 类添加到感兴趣的 TD 就足够了
<style type="text/css">
.excel_data_value_string{
mso-number-format:"\@";
}
</style>
<c:forEach var="object" items="${objectList}">
<td class="excel_data_value_string">
<c:out value="${object.value}"/>
</td>
</c:forEach>
它指定该列应被视为字符串,对于那些感兴趣的人,还有许多其他方式来格式化输出:
使用 mso-number-format 设置 Excel 单元格样式
mso-number-format:"0" //NO Decimals
mso-number-format:"0\.000" //3 Decimals
mso-number-format:"\#\,\#\#0\.000" //Comma with 3 dec
mso-number-format:"mm\/dd\/yy" //Date7
mso-number-format:"mmmm\ d\,\ yyyy" //Date9
mso-number-format:"m\/d\/yy\ h\:mm\ AM\/PM" //D -T AMPM
mso-number-format:"Short Date" //01/03/1998
mso-number-format:"Medium Date" //01-mar-98
mso-number-format:"d\-mmm\-yyyy" //01-mar-1998
mso-number-format:"Short Time" //5:16
mso-number-format:"Medium Time" //5:16 am
mso-number-format:"Long Time" //5:16:21:00
mso-number-format:"Percent" //Percent - two decimals
mso-number-format:"0%" //Percent - no decimals
mso-number-format:"0\.E+00" //Scientific Notation
mso-number-format:"\@" //Text
mso-number-format:"\#\ ???\/???" //Fractions - up to 3 digits (312/943)
mso-number-format:"\0022£\0022\#\,\#\#0\.00" //£12.76
mso-number-format:"\#\,\#\#0\.00_ \;\[Red\]\-\#\,\#\#0\.00\ " //2 decimals, negative numbers in red and signed (1.56 -1.56)