我在自动调整细胞方面遇到了一些问题。在我的程序相应地填充和格式化每个程序后,它会自动调整单元格以使其看起来在视觉上可接受。问题是,当单元格格式化为百分比时,它会自动调整单元格的大小,而不考虑有'%'字符的事实,因此我们最终在单元格上获得####,直到扩展单元格为止。有没有办法在考虑额外的'%'字符时自动调整它?
编辑:
所以这就是发生的事情,左边的VAR已经因任何原因而被正确地自动调整,但是右边的VAR没有。
EDIT2:
我注意到,仅当单元格值为0.00%时才会发生这种情况。因此,具有####的VAR列中的所有值均为0,而VAR列左侧列中的某些值为非零。
答案 0 :(得分:1)
虽然这可能不是一个理想的解决方案,但有一种可能性是抓住你插入单元格的字符串的大小(即" 50.00%" = 6的大小),然后设置单元格宽度基于该手动。
答案 1 :(得分:1)
我担心Apache POI不支持这一点,因为它在尝试计算列宽时忽略了自定义单元格格式(它只考虑字体特征和旋转,但没有DataFormat)。
作为一种解决方法,您可以尝试将自定义autoSizeColumn方法编写为当前实现的方法的修改,即:
public void autoSizeColumn(Sheet sheet, int column, int plusMinusChars) {
double width = SheetUtil.getColumnWidth(sheet, column, false);
if (width != -1) {
width += plusMinusChars;
width *= 256;
int maxColumnWidth = 255*256; // The maximum column width for an individual cell is 255 characters
if (width > maxColumnWidth) {
width = maxColumnWidth;
}
sheet.setColumnWidth(column, (int)(width));
}
}
然后您可以使用额外的'%'字符调用它来打印出来:
//4th column autosized + 1 character in width to accomodate for '%'
autoSizeColumn(sheet, 3, 1);