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

如何在Java Apache POI中获取excel单元格字段的字体样式?

弘浩博
2023-03-14

我想捕获ExcelJava中单元格字段的字体。我正在使用Apache POI。如果可以的话,我想捕获font-lovefont-Familyfont-rightfont-size等。

我怎样才能做到这一点?

共有2个答案

富念
2023-03-14

我在Groovy中有它,但原理应该类似:

import org.apache.poi.ss.usermodel.*
import org.apache.poi.hssf.usermodel.*
import org.apache.poi.ss.util.*
import java.io.*

InputStream file = new FileInputStream('C:\\Folder\\File.xls')
Workbook wb = WorkbookFactory.create(file)
Sheet sheet1 = wb.getSheet('Sheet1')
// to get first row
Row row = sheet1.getRow(0)
// to get first cell
Cell cell = row.getCell(0)
// to get its style
HSSFCellStyle cellStyle = cell.getCellStyle()
// to get font
HSSFFont cellFont = cellStyle.getFont(wb)
// to get font name as text
String cellFontName = cellFont.getFontName()
柳飞鸾
2023-03-14

根据评论编辑

你可以参考XSSFCellStyle,从它你可以得到XSSFFont。使用它,您可以获得XSSFColor、getFontName()或getFamily()和getFontHeight()或getFontHeightInPoint()。

基于我使用的示例单元格:

XSSFCellStyle cs = cell.getCellStyle();
XSSFFont font = cs.getFont();

//Getting Font color
XSSFColor color = font.getXSSFColor();
System.out.println("Font color : " + color.getARGBHex());
//==>   FF00B0F0

//Getting Font name
System.out.println("Font name : " + font.getFontName());
//==>   Arial

//Getting Font family name
FontFamily family = FontFamily.valueOf(((XSSFFont) font).getFamily());
System.out.println("Font family : " + family);
//==>   SWISS

//Getting Font family int
System.out.println("Font family in int : " + font.getFamily());
//==>   2

//Getting Font height
System.out.println("Font FontHeight : " + font.getFontHeight());
//==>   280

//Getting Font height in point
System.out.println("Font height in point : " + font.getFontHeightInPoints());
//==>   14

//Getting Font bold weight  
System.out.println("Font BoldWeight : " + font.getBoldweight());
//==>   700
 类似资料:
  • 问题内容: 实际上,我使用的是xlrd模块0.8版本,但我不知道如何读取单元格属性,例如背景色,字体以及单元格是否被锁定。 我尝试使用 它引发一个错误,指出在读取时需要设置格式化信息,但是如果我有该参数,则表明它仍未实现。 是否有另一个模块,或者该模块本身如何读取单元格属性? 问题答案: 以下内容使用xlrd 0.7.6版对我有效: 是XF类的实例;参见https://secure.simplis

  • 有人能给我一个解决方案,我可以在单元格为空时读取应用到单元格的样式吗? 谢了。

  • 问题内容: 我想以一个简单的字符串来获取数值单元格的值。 假设单元格的类型是带有value的数字。现在我无法使用,因为它将引发异常。我也无法使用,因为它会使我退缩。 我想存储在类型为varchar2的db中,所以我只希望字符串中的值。 我无法更改单元格类型,因为它是最终用户的工作,我必须在代码本身中进行处理。 格式化程序也无法正常工作,因为xls … dd:mm,dd:mm:ss,公式等中可能存在

  • 我从PDF文档中获取表单字段,但我没有看到任何获取表单字段格式的方法。例如,我的文档中有多个文本表单字段,包括数字字段、日期字段、百分比字段。有没有办法在itext7中获取字段格式类型

  • 问题内容: 我有这样的内容的Excel文件: A1:SomeString A2:2 所有字段均设置为字符串格式。 当我使用POI读取Java中的文件时,它表明A2为数字单元格格式。 问题在于A2中的值可以是2或2.0(并且我希望能够区分它们),所以我不能只使用.toString()。 如何将值读取为字符串? 问题答案: 当您提出问题时,我认为我们没有上过这堂课,但是今天有一个简单的答案。 您要做的

  • 问题内容: 我正在尝试将多行文本写入Excel单元格。 但是,当我打开文档时,我只看到一行,直到我双击它进行编辑,然后它变成了两行。为什么会这样呢?谢谢 问题答案: 您需要设置行高以容纳两行文本。 您需要设置以获取新行。试试这个:这是wb 。