当前位置: 首页 > 知识库问答 >
问题:

Apache POI设置了错误的单元格字体

夏知
2023-03-14

我对Apache POI的一个问题是,当我将字体设置为样式,然后将该样式设置为单元格时,它将正确地将该字体应用到我想要的单元格,但也将该字体应用到其他单元格。例如,我正在从已设置的模板文件创建一个HSSF excel工作簿。这个模板文件中已经填充的单元格将始终相同,当我填充我想要的单元格并改变它们的字体大小时,一些预填充单元格的字体大小也会改变。但是,只有在我不创建新的HSSFCellStyle的情况下才会出现这种情况。问题是,如果我只是创建了一个新的CellStyle,我会丢失为我想要填充的单元格预设的格式。通过一些示例和代码可以更容易地解释这一点。这是我能得到的两个不同的输出。

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

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

但当我设置这样的样式时:

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

我得到了第二张图片中的内容,但我失去了以前的格式化,比如单元格前几部分的边框。注意,我没有丢失所有边框的原因是因为单元格是合并在一起的多个单元格,但您可以看到部分边框丢失了,但“2400小时时钟”没有调整大小。我不确定是什么导致了这一点,我也不确定下一步该尝试什么。字体是这样创建的:

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

共有1个答案

彭存
2023-03-14

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

HSSFCellStyle dataStyle = currentWorkbook.createCellStyle();
dataStyle.cloneStyleFrom(cell.getCellStyle());
dataStyle.setFont(font);
 类似资料:
  • 我正在使用Apache POI读取零件编号电子表格中的数据。我在我们的数据库中查找零件编号,如果我们有零件的计算机辅助设计图纸,我将零件编号单元格涂成绿色,如果没有,我将其涂成红色。处理完成后,将保存电子表格。我遇到的问题是那列中的每个细胞都是绿色的。我已经完成了代码,查找零件号的逻辑工作正常,确定单元格应该是什么颜色以及设置颜色和填充的逻辑似乎也工作正常。知道我做错了什么吗? 谢谢

  • 我正在使用lucee-spreadsheet,这是一个很棒的工具。我正在制作一个非常大的电子表格(一个工作簿中有多个工作表,每个工作表有数千行)。一切按预期进行。我已经用数据填充了工作表,并在客户机需要的组之间创建了空白行。我现在返回并尝试应用一些格式设置,但遇到错误: 已超过单元格样式的最大数目。在.xls工作簿中最多可以定义4000个样式 问题是我只尝试应用了一种风格: 还有很多其他的风格我需

  • 我需要一个表格,第一行和第二行的单元格合并在一起。 大概是这样的: 桌子的图片(我不能张贴图片)http://i.stack.imgur.com/dAO6j.png 我一直在复习与本主题相关的所有问题,并找到了一些将网格跨度应用于单元的答案,但我找不到真正的解决方案。 以下是我从谷歌和本网站获得的示例代码: 我从这段代码中得到的信息如下: 我试图用

  • 我正在使用JavaApachePOI生成excel,我只需要美化它(带边框) 这是我生成excel的一些代码

  • 当我运行以下配置单元命令时 hive-e‘选择msg,将(*)从表中计数为cnt,其中像“%abcd%”这样的msg按msg排序按cnt desc;’sed的/[\t]/,/g'>table.csv 失败:ParseException第1:89行无法识别表达式规范中“like”“%”“password”附近的输入 我知道在指定字符串“%abcd%”时有问题。该命令在配置单元环境中工作正常,但这里我