当前位置: 首页 > 面试题库 >

获取单元格值,如其在excel中的显示方式

魏高邈
2023-03-14
问题内容

我目前正在研究一个使用Apache POI读取Excel文件的项目。

我的任务似乎很简单,我只需要获取在excel文件中显示的单元格值即可。我知道要根据单元格的单元格类型执行switch语句。但是如果数据是这样的

9,000.00

9000.0我做的时候POI给我getNumericCellValue()。当我强制该单元格为字符串类型并执行getStringCellValue()此操作后,它就会给我9000。我需要的是数据在excel中的显示方式。

我发现有人告诉使用DataFormat类,但据我了解,它要求您的代码了解单元格的格式。就我而言,我不知道该单元格可能具有的格式。

那么,如何像在excel中一样显示单元格值呢?


问题答案:

Excel将某些单元格存储为字符串,但大多数存储为数字,并对其应用了特殊的格式设置规则。您需要做的是让这些格式化规则针对数字单元格运行,以生成类似于Excel中的字符串。

幸运的是,Apache
POI有一类可以做到这一点-DataFormatter

您需要做的只是:

 Workbook wb = WorkbookFactory.create(new File("myfile.xls"));
 DataFormatter df = new DataFormatter();

 Sheet s = wb.getSheetAt(0);
 Row r1 = s.getRow(0);
 Cell cA1 = r1.getCell(0);

 String asItLooksInExcel = df.formatCellValue(cA1);

不管单元格类型是什么,DataFormatter都将使用Excel中应用的规则为您尽可能地格式化它



 类似资料:
  • null 如您所料,A3将导致。现在将A2的格式更改为会计,使用小数点后2位。A2现在读,但是基础值仍然是,所以A3仍然是。 VBA 制作一个新模块并添加以下函数: null 和具有相同的基础值,但和没有,尽管它们都是使用和的方法计算的。 ()中的表达式正在访问和的实际基础值。如何在VBA中访问这些值?

  • 我试图根据任意单元格的值,获取从E到BH的特定范围内的整行数据。例如,如果单元格P,3上的值为“红色”,则我希望选择从E3到BH,3的整个范围。 此外,如果F9中的单元格上有值“黄色”,我希望选择从E9到BH9的整行 到目前为止,我一直在尝试从字符串“my text”中获取行,但它不起作用。我计划以与类似的方式获取行和列,以便根据文本获取从e(行)到bh(行)的行

  • 我有一个带有sheet1 excel文件,该文件的第2行和第10列有一个我需要读取的值。这是我的代码。 获取了cell对象Excel.Range后,我不知道如何读取该单元格的内容。我试着把它转换成数组并在它上面循环,我试着转换成字符串数组等等,我确信这是非常简单的。有没有直接的方法只得到一个字符串的单元格值?

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

  • 问题内容: 当我读取excel数字单元格值时,我得到带小数的输出。例如:79读数为79.0,0.00读数为0.0。我编写的应用程序代码是: 问题答案: Stack Overflow上经常出现这个问题,因此建议您仔细阅读许多类似的问题,以找到答案! Excel将文件格式中的几乎所有数字都存储为浮点值,这就是为什么POI会为您返回数字单元格的双精度数字,因为这就是真正的数字。如果希望它看起来像在Exc

  • 在Java中,我应该得到的输出是