目前在JAVA上记取excl, 是通过 poi 的 hssf 和 jxl
在读取数值时, 有一个情况是经常遇到的, 就是我们需要数值的表现形式, 而不是数值本身
例如, 7 1/4, 它的真实数值是 7.25, 你在上面菜单左侧单元格编号右边, "fx" 后面可以看见这个真实的值, 只是, 也许是客户不熟excel, 也许是业务原因, 总之, 我们在后台需要获取 "7 1/4", 而不是 "7.25",
hssf
cell.getNumberValue()
jxl
cell.getContents()
或
numberCell.getValue()
都是得到"7.25"
如果强制转化成 label 单元格, 将会抛出异常
解决办法
其实excel的单元格表现形式, 是有格式的, 7.25 要表现成 7 1/4, 实际上是通过设计格式为 "# ?/?", 只是excel"人性化"的自动帮我们做了这一步, 具体在: 单元格格式->数字->分类->自定义-> # ?/?
另外, 也等价于, 分类->分数->分母为一位数(1/4)
所以, 我们可以通过dataformat获知这个数值的格式, 再人为转化出这个数值的表现形式
实例
jxl
CellFormat cf=cell.getCellFormat();
Format f=cf.getFormat();
System.out.println("formula : "+f.getFormatString());
结果是: formula : # ?/?
poi
int df=cell.getCellStyle().getDataFormat();
System.out.println("formula : "+df);
结果是: formula : 12
这个值参考 dataformat, 为方便浏览, 我贴出来:
0, "General"
1, "0"
2, "0.00"
3, "#,##0"
4, "#,##0.00"
5, "($#,##0_);($#,##0)"
6, "($#,##0_);[Red]($#,##0)"
7, "($#,##0.00);($#,##0.00)"
8, "($#,##0.00_);[Red]($#,##0.00)"
9, "0%"
0xa, "0.00%"
0xb, "0.00E+00"
0xc, "# ?/?"
0xd, "# ??/??"
0xe, "m/d/yy"
0xf, "d-mmm-yy"
0x10, "d-mmm"
0x11, "mmm-yy"
0x12, "h:mm AM/PM"
0x13, "h:mm:ss AM/PM"
0x14, "h:mm"
0x15, "h:mm:ss"
0x16, "m/d/yy h:mm"
// 0x17 - 0x24 reserved for international and undocumented 0x25, "(#,##0_);(#,##0)"
0x26, "(#,##0_);[Red](#,##0)"
0x27, "(#,##0.00_);(#,##0.00)"
0x28, "(#,##0.00_);[Red](#,##0.00)"
0x29, "_(*#,##0_);_(*(#,##0);_(* \"-\"_);_(@_)"
0x2a, "_($*#,##0_);_($*(#,##0);_($* \"-\"_);_(@_)"
0x2b, "_(*#,##0.00_);_(*(#,##0.00);_(*\"-\"??_);_(@_)"
0x2c, "_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)"
0x2d, "mm:ss"
0x2e, "[h]:mm:ss"
0x2f, "mm:ss.0"
0x30, "##0.0E+0"
0x31, "@" - This is text format.
0x31 "text" - Alias for "@"
在poi的doc上, 有hssfcellstyle有getDataFormatString方法, 估计就是直接给出"# ?/?"(单元格format), 但在我机子上的POI没有, 也许是我没有用最新的版本
最后, 补充点 excel 知识, 在excel上, 要在excel指定"7 1/4"这种数值格式为文本, 可以直接指定"7 1/4"为文本格式, 又或者在常规格式下, 输入"'7 1/4", 这样也是它将也会是文本格式, 在单元格左上角会有一个小小的三角图标
分享到:
相关推荐
Excel 读取 读取Excel到Dataset中
2. 数据类型:Excel中的数据可能是数值、文本、日期等类型,读取时需根据需求正确解析。 3. 大数据处理:如果文件过大,可能需要分批读取或使用内存优化技术。 4. 错误处理:处理可能出现的文件不存在、格式错误等...
在IT领域,Excel读取源码通常指的是编程中用于解析、操作或提取Excel文件内容的代码。Excel文件格式,特别是.xlsx格式,是基于Open XML标准,由一系列XML文档组成,可以使用不同的编程语言来处理。以下是一些关于...
这个脚本首先获取指定目录下所有Excel文件的列表,然后逐个读取文件并将数据存储到cell数组中。接着,它创建一个新的Excel工作簿,并对每个工作表进行命名,然后将cell数组中的数据写入对应的工作表。最后,保存并...
在本文中,我们将深入探讨如何使用WPF(Windows Presentation Foundation)和NPOI库来实现高效地读取和导出Excel文件。WPF是微软推出的新一代桌面窗口技术,提供了丰富的用户界面设计和数据绑定功能,而NPOI则是一个...
本解决方案主要针对使用Apache POI库进行Excel读取时遇到的这类问题。 首先,Apache POI是Java中广泛使用的处理Microsoft Office文档(包括Excel)的库。在处理大文件时,POI会将整个工作簿加载到内存中,当文件过...
C# 读取加密的Excel 文件; 有源码,VS2010开发。 采用的是微软的Microsoft.Office.Interop.Excel, V14.0,来读取加密后的Excle文件。 不是采用第三方控件NPOI读取加密的Excel文件。 开始研究NPOI读取加密的Excel文件...
在IT领域,读取Excel是一项常见的任务,尤其在数据分析、报表处理和自动化脚本中。Excel文件(.xlsx或.xls)通常包含表格数据,而Python编程语言提供了多种库来处理这些文件。本篇文章将深入探讨如何使用Python读取...
读取环境为Win10+VS2015,个人参考资料封装的excel读取模块用来读取Excel2007中的数据,文件为压缩文件,亲测可用。
Java读取Excel内容 v Java读取Excel内容 Java读取Excel内容
- **处理数据**:读取的数据通常以字符串形式存在,根据需求可能需要转换为数值或其他类型。 2. **Excel文件写入**: - **创建新工作簿**:使用“创建工作簿”函数可以创建一个新的Excel文件,或者使用“打开工作...
3. **Excel文件结构**:Excel文件通常包含工作簿(Workbook)、工作表(Sheet)和单元格(Cell)等概念。读取器需要理解这些结构以便正确地遍历和解析数据。 4. **ExcelReader接口**:`ExcelReader.java`很可能定义...
labview从excel读取数据,labview从excel读取数据成数组的LABVIEW代码,
6. 读取 Excel 数据:使用 `Cell` 对象读取 Excel 数据,例如 `Cell cell = sheet.getCell(j, i);`。 7. 存储读取的数据:使用 `ArrayList` 存储读取的数据,例如 `List[]> list = new ArrayList[]>();`。 Java ...
在使用LabVIEW进行数据处理和分析时,有时我们需要与Microsoft Excel进行交互,即读取Excel文件中的数据或向Excel文件写入数据。本教程将详细讲解如何使用LabVIEW实现这一功能,主要关注“读取”和“写入”两个核心...
本文将详细介绍如何使用Java来读取Excel文件并进行批量导入到数据库的操作。 首先,我们需要了解两个关键的Java库:Apache POI和JDBC(Java Database Connectivity)。Apache POI是Java中用于处理Microsoft Office...
在VB2010中操作Excel2007读取数据是常见的编程需求,尤其是在处理大量结构化数据时。Visual Basic 2010(VB2010)提供了丰富的库函数,允许开发者通过Microsoft Office Interop Excel组件来与Excel交互。这个简单的...
可读取workbook中的worksheet以及其中的每个CELL 可读取包含任意内容的CELL(字符、数字、公式、时间等)的值和属性(字形,背景色等) 可读取文件中的图片 可创建一个workbook并存成相应文件
在C++中,读取Excel数据通常涉及到使用OLE Automation(对象链接和嵌入自动化)技术,这是一种允许不同应用程序之间交互的方式。在这个特定的例子中,我们使用Microsoft Visual Studio 2003 MFC(Microsoft ...