本文中要解决两个问题
1:读取cell数据时,NullPointerException异常问题和获取不同类型数据的问题
2:保存数值类型数据到excel文件时注意的问题
第一个问题描述:
在取出cell数据时,如果cell本身没有数据,常常抛出NullPointerException异常。原因是当cell中没有数据时,获取cell对象本身就是等于NUll,内存不会为这个Cell new出对象,所以在调用cell方法时,无疑会抛出NullPointerException异常。
解决方案:
写个工具类处理这个问题.
public class POIUtil {
public static String getStringCell(Cell cell) {
String str = null;
if (cell != null) {
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
case HSSFCell.CELL_TYPE_FORMULA:
str = new Long((long) cell.getNumericCellValue()).toString();
break;
case HSSFCell.CELL_TYPE_STRING:
str = cell.getStringCellValue().trim();
break;
default:
break;
}
}
return str;
}
public static double getNumericCell(Cell cell) {
double doub = 0;
if (cell != null) {
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
case HSSFCell.CELL_TYPE_FORMULA:
doub = cell.getNumericCellValue();
break;
case HSSFCell.CELL_TYPE_STRING:
doub = Double.parseDouble(cell.getStringCellValue().trim());
break;
default:
break;
}
}
return doub;
}
public static float getFloatCell(Cell cell) {
float f = 0;
if (cell != null) {
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
case HSSFCell.CELL_TYPE_FORMULA:
f = (float)cell.getNumericCellValue();
break;
case HSSFCell.CELL_TYPE_STRING:
f = Float.parseFloat(cell.getStringCellValue().trim());
break;
default:
break;
}
}
return f;
}
public static long getLongCell(HSSFCell cell) {
return (long) getNumericCell(cell);
}
public static int getIntCell(Cell cell) {
return (int) getNumericCell(cell);
}
public static Date getDateCell(Cell cell) {
Date date = null;
if (cell != null) {
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
date = new Date(cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_BLANK:
case HSSFCell.CELL_TYPE_BOOLEAN:
case HSSFCell.CELL_TYPE_ERROR:
break;
default: date = cell.getDateCellValue();
}
}
return date;
}
}
第二种问题描述:
在保存数值类型数据到excel文件时,excel中的数值只认识HSSFCell.CELL_TYPE_NUMERIC类型,此类型对应java中的double类型。比如把float值存入cell时,cell会自动处理成double值.
举个例子,我希望把float值保留两位小数的形式存入cell中,但打开excel文件发现cell中的数值并非两位小数。在float值存入之前,数值本身已经是两位小数,但在文件中并非如此表现。原因就是数值自动转为了double类型。现在我们知道问题的原因,解决办法也就很简单。我们写个方法,把float转为double类型,不劳它自己费心。自己转。哈哈
解决方案:
//double值保留俩位小数
public double twoPointD(double d){
BigDecimal bd = new BigDecimal(d);
bd = bd.setScale(2,4);
d = bd.doubleValue();
return d;
}
分享到:
相关推荐
首先,`问题.docx`可能是你在使用POI过程中遇到的问题汇总,它可能包含了错误信息、解决步骤或常见问题的解决方案。通过阅读这份文档,你可以避免或解决类似的问题,提升开发效率。 其次,`统计年鉴示例.xlsx`是一...
在Java世界里,当你需要处理Excel 2007及以上版本(即XLSX格式)的文件时,Apache POI是一个非常实用的库。由于JXL库不支持XLSX格式,所以Apache POI成为了首选解决方案。 在“poi读取excel文件实例”中,我们将...
总之,Apache POI 是Java开发中处理Excel文件的强大工具,无论是读取用户上传的数据还是创建可下载的报表,都能提供高效且灵活的解决方案。通过熟练掌握POI,开发者可以轻松地将Excel集成到Web应用中,实现数据的...
总之,`LeftoverDataException`是POI在处理Excel文件时遇到的一种错误,通常需要从文件本身、编码、单元格格式、代码逻辑以及内存分配等多个角度进行排查。通过以上建议,开发者应该能够找到解决问题的途径。如果...
### POI的EXCEL导出,自动换行 在日常工作中,经常需要处理大量的数据导入导出任务,...无论是简单的数据导出还是复杂的报表生成,POI都能够提供相应的解决方案。希望本文能够帮助大家更好地理解和使用Apache POI。
事件驱动解析是把文件转换成xml,然后一边读取一边解析,这样就对内存的占用就会很少,可以很好的处理poi出现OOM的问题。 maven添加需要的jar包 <groupId>org.apache.poi <artifactId>poi <version>3.15 ...
在Java编程环境中,Apache POI库是一个非常实用的工具,它允许我们操作Microsoft Office格式的文件,特别是Excel(.xls和.xlsx)文件。...不过,使用时要考虑性能和资源消耗,选择最适合的解决方案。
总之,这个项目是一个完整的Java解决方案,用于处理Excel文件的导入导出,同时具备用户友好的进度条显示。它利用了Apache POI的强大功能,结合maven的依赖管理,以及可能的GUI组件,提供了高效且直观的数据操作体验...
在Java开发中,当需要处理大量的Excel数据时,POI库提供了高效且灵活的解决方案。标题提到的“POI导入excel大数据处理”是指利用Apache POI进行大量Excel数据的导入操作,同时它兼容Excel 2003(.xls格式)和2007...
在Android平台上,使用Apache POI库来读取Excel文件是一种常见的解决方案。Apache POI是一个流行的开源项目,它允许程序员创建、修改和显示Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。在这个“android ...
在IT行业中,处理Excel文件是常见的任务,尤其是在数据处理、报表生成和数据分析等领域。Apache POI 是一个流行的Java库,专门用于读写Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。本教程将深入探讨如何...
5. **安全考虑**:在处理用户上传的Excel文件时,需要防止SQL注入等安全问题。对输入数据进行验证和过滤,确保数据的合法性。 总之,"Springboot+Poi实现Excel的导入导出"项目结合了多种强大的工具,提供了一种高效...
对于 Excel 文件,POI 使用 HSSF(Horizontally Stored Spreadsheet Format)来处理 .xls 文件(Excel 97-2007 格式),而 XSSF(XML Spreadsheet Format)则用于处理 .xlsx 文件(Excel 2007 及以后版本的格式)。...
总的来说,这些文档和资源将帮助开发者深入理解如何使用Apache POI在Java环境中生成、编辑和格式化Excel文件,特别关注了中文字符处理和自动调整列宽等实际问题,提供了多种实用的解决方案。对于那些需要处理Excel...
为解决这一问题,POI引入了SXSSF(Streaming Usermodel API),它允许在内存有限的情况下处理大型Excel文件,通过写入磁盘的临时文件来分批处理数据。 总结来说,Java的POI库是企业级开发中处理Excel文件的重要工具...
以下是一些关键知识点和解决方案: 1. **内存管理策略**: - **SXSSF**:SXSSF是POI提供的一个内存效率更高的API,它允许以流式处理数据,只保留最近使用的行在内存中,其余的写入磁盘。默认情况下,它会保留100行...
标题中的“POI实现大数据量的excel文件解析”是指使用Apache POI库来处理大量数据的Excel文件。...在实际应用中,可能还需要考虑性能优化、错误处理和并发处理等方面的问题,以实现更高效的解决方案。
在现代企业级应用开发中,数据的导入与导出功能是非常常见且重要的。SpringBoot结合Mybatis框架提供了高效...通过理解SpringBoot的自动配置、Mybatis的SQL映射以及POI的Excel操作,我们可以轻松地构建类似的解决方案。