poi 读取excel 怎么样处理自动求和的函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poi 读取excel 怎么样处理自动求和的函数相关的知识,希望对你有一定的参考价值。
比如我ecxel里那个函数SUM(D20:L20) 是这个 求D20到L20的和 可我读进来也是这个函数原样没变 我怎么才能拿到它求和后的值 啊 各们大哥大姐帮帮忙啊
如果单元格所存的内容为函数,则通过poi得到的cell type为Cell.CELL_TYPE_FORMULA;解析时的函数:switch (cell.getCellType())
case Cell.CELL_TYPE_BOOLEAN:
System.out.println(cellValue.getBooleanValue());
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.println(cellValue.getNumberValue());
break;
case Cell.CELL_TYPE_STRING:
System.out.println(cellValue.getStringValue());
break;
case Cell.CELL_TYPE_BLANK:
break;
case Cell.CELL_TYPE_ERROR:
break;
case Cell.CELL_TYPE_FORMULA:
CellValue cellValue = evaluator.evaluate(cell);
switch (cellValue.getCellType())
case Cell.CELL_TYPE_BOOLEAN:
System.out.println(cellValue.getBooleanValue());
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.println(cellValue.getNumberValue());
break;
case Cell.CELL_TYPE_STRING:
System.out.println(cellValue.getStringValue());
break;
case Cell.CELL_TYPE_BLANK:
break;
case Cell.CELL_TYPE_ERROR:
break;
// CELL_TYPE_FORMULA will never happen
case Cell.CELL_TYPE_FORMULA:
break;
就是说要进行多一层的判断,poi会通过其内部实现的函数去解析excel的函数;所以这里可以解析excel函数,而如果是你自己用VB定义的函数,就需要另外处理了。
参考资料:http://poi.apache.org/spreadsheet/eval.html
参考技术A 先复制相应的单元格或者工作表粘贴的时候选择仅数值,不复制公式
就全部变为数值型数据了 参考技术B =D20+L20 参考技术C 完整的如下:
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(excelFileName));
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
CellValue cellValue = evaluator.evaluate(cell);//cell是单元格。。
switch (cell.getCellType())
case HSSFCell.CELL_TYPE_BOOLEAN:
value=cellValue.getBooleanValue();
System.out.println(cellValue.getBooleanValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
value=cellValue.getNumberValue();
System.out.println(cellValue.getNumberValue());
break;
case HSSFCell.CELL_TYPE_STRING:
value=cellValue.getStringValue();
System.out.println(cellValue.getStringValue());
break;
case HSSFCell.CELL_TYPE_BLANK:
break;
case HSSFCell.CELL_TYPE_ERROR:
break;
case HSSFCell.CELL_TYPE_FORMULA:
switch (cellValue.getCellType())
case HSSFCell.CELL_TYPE_BOOLEAN:
value=cellValue.getBooleanValue();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
value=cellValue.getNumberValue();
break;
case HSSFCell.CELL_TYPE_STRING:
value=cellValue.getStringValue();
break;
case HSSFCell.CELL_TYPE_BLANK:
break;
case HSSFCell.CELL_TYPE_ERROR:
break;
// CELL_TYPE_FORMULA will never happen
case HSSFCell.CELL_TYPE_FORMULA:
break;
java使用poi读取excel时,电话号码变成了科学计数法,整数变成double,怎么改过来
参考技术A为了防止数字变成科学计数法方式表示,在源文件以及java代码中都用文的方式去生成和解析excel,具体如下:
生成Excel时,设置单元格格式为STRING,即:
//关键代码
HSSFCell cell = new HSSFCell();
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
同理,解析的时候,首先要保证源excel文件中该单元格格式是文本类型的,然后在java代码里用STRING类型去解析:
//关键代码
String value = cell.getStringCellValue();
扩展资料;
在这里,将只介绍一些和格式设置有关的语句,假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:
创建字体,设置其为红色、粗体:
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
参考资料来源:百度百科-POI
以上是关于poi 读取excel 怎么样处理自动求和的函数的主要内容,如果未能解决你的问题,请参考以下文章
java使用poi读取excel时,因一些格式问题,执行excel函数错误