繁体   English   中英

正在设置Apache POI错误单元格字体

[英]Apache POI Wrong Cells Font Being Set

我在使用Apache POI时遇到问题,当我将一种字体设置为一种样式,然后将该样式设置为一个单元格时,它将正确地将该字体应用于所需的单元格,但还将该字体应用于其他单元格。 例如,我要从已设置的模板文件创建HSSF excel工作簿。 此模板文件中已填充的单元格将始终保持不变,并且当我填写所需的单元格并更改其字体大小时,某些预填充的单元格字体大小也会更改。 但是,只有在我不创建新的HSSFCellStyle时,才会发生这种情况。 这样做的问题是,如果我只是创建一个新的CellStyle,则会丢失我为要填充的单元格预先设置的格式。 使用一些示例和代码可能更易于解释。 所以这是我可以获得的两个不同的输出。

大标签

遗失边界

在第一张图片中,您可以看到“ 2400 Hr Clock”已被调整大小,即使在我的代码中,我也从未将样式应用于该单元格,仅(应该)应用于日期单元格和时间单元格。 这是我设置如下样式的时候:

HSSFCellStyle dataStyle = cell.getCellStyle();
dataStyle.setFont(font);

但是当我改为这样设置样式时:

HSSFCellStyle dataStyle = currentWorkbook.createCellStyle();
dataStyle.setFont(font);

我得到了第二张图片中的内容,但是丢失了以前的格式,如单元格第一部分中的边框。 请注意,我之所以没有丢失所有边框,是因为这些单元是合并在一起的多个单元,但是您可以看到部分边框丢失了,但是“ 2400 Hr Clock”的大小尚未调整。 我不确定是什么原因造成的,也不确定接下来要尝试什么。 字体是这样创建的:

HSSFFont font = currentWorkbook.createFont();
font.setFontName("Times");
font.setFontHeightInPoints(fontSize);

解决方案是克隆样式,而不是像这样获得样式:

HSSFCellStyle dataStyle = currentWorkbook.createCellStyle();
dataStyle.cloneStyleFrom(cell.getCellStyle());
dataStyle.setFont(font);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM