gpt4 book ai didi

java - 读取Excel单元格并确定单元格中的格式化单词

转载 作者:行者123 更新时间:2023-12-02 23:19:26 26 4
gpt4 key购买 nike

是否可以从 Excel 工作表中读取单元格的格式并确定哪些单词是粗体或斜体?我可以读取和写入单元格,而且我还知道 JExcel 可以写入格式化的单元格。在格式化单元格中,我的意思是文本是斜体或粗体。

是否可以读取单元格数据并确定哪些单词是粗体?例如,我将在单元格中添加以下内容:

“来自一个 Excel 单元格示例文本”

我想知道字符串“excel cell”是粗体,字符串“sample”是斜体。这在 JExcel 中可能吗?如果不可能,我将如何在 Java 中做到这一点?有人可以推荐一个 API 吗?也许更好的方法是解析 xml 文件。

最佳答案

我不了解 JExcel,但我可以告诉你这在 Apache POI 中相当容易做到。这是一个简单的应用程序,展示了一种实现方法。它不是非常漂亮,但应该足以让您入门:

public static final void main(String... args) throws Exception
{
InputStream is = ExcelFormatTest.class.getResourceAsStream("Test.xlsx");
Workbook wb = new XSSFWorkbook(is);
Sheet sheet = wb.getSheetAt(0);
Cell cell = sheet.getRow(0).getCell(0);
XSSFRichTextString richText = (XSSFRichTextString)cell.getRichStringCellValue();
int formattingRuns = cell.getRichStringCellValue().numFormattingRuns();

for(int i = 0; i < formattingRuns; i++)
{
int startIdx = richText.getIndexOfFormattingRun(i);
int length = richText.getLengthOfFormattingRun(i);
System.out.println("Text: " + richText.getString().substring(startIdx, startIdx + length));
if(i == 0)
{
short fontIndex = cell.getCellStyle().getFontIndex();
Font f = wb.getFontAt(fontIndex);
System.out.println("Bold: " + (f.getBoldweight() == Font.BOLDWEIGHT_BOLD));
System.out.println("Italics: " + f.getItalic() + "\n");
}
else
{
Font f = richText.getFontOfFormattingRun(i);
System.out.println("Bold: " + (f.getBoldweight() == Font.BOLDWEIGHT_BOLD));
System.out.println("Italics: " + f.getItalic() + "\n");
}
}
}

基本上,您从单元格中获取一个 RichTextString 对象(不过,首先要确保它是一个 String 单元格),然后迭代格式化运行并检查每个单元格的字体。看起来第一次运行使用了 Cell 的 CellStyle/font,因此您必须以这种方式查找它(如果您尝试从 RichTextString 获取它,您会得到一个 NPE)。

一旦你拥有了字体,你就可以获得它的所有属性。这是 POI Font 的 Javadoc .

如果您使用的是较旧的非 XLSX 文件,请将类名称中的 XSSF 替换为 HSSF,并且您必须稍微更改 RichTextString 代码才能使用字体索引查找字体。以下是 XSSFRichTextString 的 JavaDocs和 HSSFRichTextString .

在工作表 1 的 A1 中使用以下内容运行此操作:“来自一个 Excel 单元格示例文本 "给出以下结果:

Text: A 
Bold: false
Italics: false

Text: sample
Bold: true
Italics: false

Text:  text 
Bold: false
Italics: false

Text: from
Bold: false
Italics: true

Text:  one 
Bold: false
Italics: false

Text: excel cell
Bold: true
Italics: true

关于java - 读取Excel单元格并确定单元格中的格式化单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20732151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com