分类:JAVA2012-01-11 13:31818人阅读评论(0)收藏举报
项目中需要使用Excel导入数据,读取Excel单元格的方法如下:
[java]view plaincopyprint?
1. private static String getStringCellValue(Cell cell) {// 获取单元格数据内容为字符串类型的数据
2. String strCell = "";
3. if (cell == null) {
4. return "";
5. }
6. switch (cell.getCellType()) {
7. case Cell.CELL_TYPE_FORMULA:
8. // cell.getCellFormula();
9. try {
10./*
11.* 此处判断使用公式生成的字符串有问题,因为HSSFDateUtil.isCellDateFormatted(cell)判断过程中cell
12.* .getNumericCellValue();方法会抛出java.lang.NumberFormatException异常
13.*/
14.if (HSSFDateUtil.isCellDateFormatted(cell)) {
15.Date date = cell.getDateCellValue();
16.strCell = (date.getYear() + 1900) + "-" + (date.getMonth() + 1) +"-" + date.getDate();
17.break;
18.} else {
19.strCell = String.valueOf(cell.getNumericCellValue());
20.}
21.} catch (IllegalStateException e) {
22.strCell = String.valueOf(cell.getRichStringCellValue());
23.}
24.break;
25.case Cell.CELL_TYPE_STRING:
26.strCell = cell.getStringCellValue();
27.break;
28.case Cell.CELL_TYPE_NUMERIC:
29.if (HSSFDateUtil.isCellDateFormatted(cell)) {
30.strCell = getDateCellValue(cell);
31.break;
32.} else {
33.strCell = String.valueOf(cell.getNumericCellValue());
34.break;
35.}
36.case Cell.CELL_TYPE_BOOLEAN:
37.strCell = String.valueOf(cell.getBooleanCellValue());
38.break;
39.case Cell.CELL_TYPE_BLANK:
40.strCell = "";
41.break;
42.default:
43.strCell = "";
44.break;
45.}
46.return strCell;
47.}
这个方法在导入没有公式的Excel时没有问题,今天遇到含有公式的Excel,如图:
报错信息如下:
经调试发现HSSFDateUtil.isCellDateFormatted(cell)判断过程中会执行cell.getNumericCellValue();方法,字符串“201201FSSH300466”在转换成数字的时候出错了,在网上搜了一下,大多数的解决方法是:
[java]view plaincopyprint?
1. case HSSFCell.CELL_TYPE_FORMULA:
2. try {
3. value = String.valueOf(cell.getNumericCellValue());
4. } catch (IllegalStateException e) {
5. value = String.valueOf(cell.getRichStringCellValue());
6. }
7. break;
经测试发现,在执行cell.getNumericCellValue()方法时还是抛出NumberFormatException异常,于是将try/catch中的方法互换:
[java]view plaincopyprint?
1. case HSSFCell.CELL_TYPE_FORMULA:
2. try {
3. strCell = String.valueOf(cell.getStringCellValue());
4. } catch (IllegalStateException e) {
5. strCell = String.valueOf(cell.getNumericCellValue());
6. }
7. break;
这样对于字符串cell.getStringCellValue()方法即可取得其值,如果公式生成的是数值,使用cell.getStringCellValue()方法会抛出IllegalStateException异常,在异常处理中使用cell.getNumericCellValue();即可。
相关推荐
5. **处理公式**: - 在模板文件中,可以预先设置好需要使用的公式,如求和、平均值等。 - POI会自动保留这些公式,并在Excel中正确计算。 #### 四、注意事项 - 确保模板文件中已经包含了需要的公式,以及正确的...
标题中的“poi解析word文档”指的是使用Apache POI库来处理Microsoft Word(.doc或.docx)文件。Apache POI是Java中一个流行的库,它允许开发者读取、写入和修改Microsoft Office格式的文件,包括Word、Excel和...
在这个“Excel2007Poi处理教程”中,我们将深入探讨如何利用Apache POI处理Excel 2007(XLSX)文件。Excel 2007引入了新的XML格式,使得文件结构更为复杂,但同时也提供了更多的功能和更高的数据存储容量。 首先,...
这个“excel poi工具类”是利用Apache POI库来实现对Excel文件进行导入、导出、合并单元格以及处理计算公式的功能。下面我们将深入探讨这些知识点。 **1. Apache POI库介绍** Apache POI是一个开源项目,它为Java...
你可以通过这个例子学习如何操作单元格、行和列,以及如何处理公式、样式和图表。 `project`文件夹可能包含了一个完整的Java项目,其中应用了POI库来处理Excel。这将是一个很好的参考,从中你可以看到如何在实际...
Apache POI是一个流行的开源库,主要用于处理Microsoft Office格式的文件,包括Excel(XLS和XLSX)。在Java开发环境中,POI为开发者提供了一种高效且灵活的方式来读取、写入以及修改Excel电子表格。在本文中,我们将...
在使用Apache POI处理Excel 2007的XML文件时,有以下关键概念: 1. **XSSFWorkbook**:这是POI中用于表示.xlsx文件的工作簿对象。通过这个对象,我们可以创建、读取和修改工作簿中的内容。 2. **SXSSF (Streaming ...
- **公式处理**:对于含有公式的单元格,POI会计算其结果,但不会显示公式本身,除非特别设置。 - **内存管理**:由于POI在内存中加载整个文件,处理大型Excel文件时需要注意内存消耗,可以使用SXSSF低内存模型进行...
这个“POI中文帮助文档”提供了全面的指南,帮助开发者理解和使用POI API来处理这些文件类型。 1. **POI基本概念**: - **HSSF**:用于处理Excel的低级别API,主要支持.xls格式的老版Excel文件。 - **XSSF**:...
通过使用Apache POI,开发者可以在Java应用程序中实现与Excel的深度交互,比如创建复杂的表格、图表,执行公式计算,以及读取和修改现有文件。标签中的"poi excel 表格"明确指出,这里的重点是处理Excel文件,这在...
例如,可以创建新的Excel工作簿,添加工作表,插入公式,设置单元格样式,读取数据,甚至处理图表和图片。对于Word文档,可以添加文本、段落、页眉和页脚,而对于PowerPoint,可以创建幻灯片、添加文本框、图片和...
- 由于POI处理的是二进制或XML格式的文件,因此在处理大量数据时可能会占用大量内存,需要合理利用SXSSF以减少内存使用。 - POI库的API设计相对复杂,学习曲线较陡峭,需要花时间去熟悉各种类和方法。 - 当处理复杂...
使用POI处理Excel文件时,你可以创建一个新的Workbook对象,然后添加Sheet,再在Sheet中创建Row和Cell。你可以填充数据,设置样式,应用公式,并保存为Excel文件。对于读取Excel文件,POI提供了相应的API来打开...
Apache POI是Java中一个流行的库,它主要用于处理Microsoft Office格式的文件,如Excel。在这个场景中,我们将探讨如何使用POI来创建CSV文件,这在数据导入导出、数据分析或报表生成等场景中非常常见。 CSV文件因其...
1. **XSSFWorkbook和HSSFWorkbook**: 这是POI处理Excel的主要类。XSSFWorkbook用于处理.xlsx(基于OpenXML)格式,而HSSFWorkbook则用于处理.xls(基于BIFF8)格式的文件。 2. **Sheet、Row和Cell**: 分别代表Excel...
Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Excel、Word和PowerPoint。POI 提供了一套 Java API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件。标题中的"poi-3.17 poi-...
Apache POI 是一个开源项目,专门用于处理微软的Office文档格式,如Word(.doc, .docx)、Excel(.xls, .xlsx)等。在本案例中,我们关注的是如何使用Apache POI将Word文档转换为HTML格式,并且保持原有的样式、表格...
基于新版本的POI编写的读取Excel文件数据的工具类,可根据绝对路径、File对象、InputSteam对象读取解析Excel文件内容,并返回List<List<String>>格式结果,其中包含对单元格公式的处理。
如果你的Excel文件包含公式,Apache POI也能处理。你可以使用`HSSFFormulaEvaluator`来计算公式的结果。对于图表,虽然POI在早期版本中支持有限,但仍然可以创建基本的图表元素,不过功能可能不如处理表格数据那么...
Apache POI 是一个开源项目,由Apache软件基金会维护,它主要致力于处理Microsoft Office格式的文件,如Excel(.xlsx, .xls),Word(.doc, .docx)和PowerPoint(.ppt, .pptx)。POI库为Java开发者提供了一套API,...