poi读取excel小数

ylovep 2012-08-30 09:18:35
{cCode=18-245, cBetweenUnitsFlag=0 , cBetweenUnits=, cOrgnID=22, dVouDate=2011-08-03, iMonth=07, cAcctName=其他业务支出_中转, iYear=2011, cAcctGUID=0640200, iDebitQTY=0, iCreditAMT2=, cDeptName=缺省, cVouTypeGUID=Manual, iCreditAMT1=0, iCreditQTY=0, cSummary=本月南传领料, cCreatorGUID=CWWENY, iDebitAMT1=28133.42, iDebitAMT2=28133.42}
这是一行数据 存放在一个map中

在保存到数据库之前获取该map中iDebitAMT1值 也在后台输出:金额:28133.42

最后保存数据库的时候出现

insert into Co_Relationdetails1 (cOrgnID,cVouTypeGUID,cCode,dVouDate,iYear,iMonth,cCreatorGUID,cAcctGUID,cAcctName,cSummary,iDebitAMT1,iCreditAMT1,iDebitAMT2,iCreditAMT2,iDebitQTY,iCreditQTY,cDeptName,cBetweenUnitsFlag) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
{22,Manual,18-245,2011-08-03 00:00:00.0,2011,07,CWWENY,0640200,其他业务支出_中转,本月南传领料,0E+127,0,0E+127,0,0,0,缺省,0 }
红色部分为什么是这样的情况?求解
...全文
868 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylovep 2012-09-09
  • 打赏
  • 举报
回复
该问题以及解决

原因:数据库字段设置问题 将numer类型该成果 nunmer(21,9)
brightyq 2012-08-31
  • 打赏
  • 举报
回复
可以转成字符串往数据库里插入。
wscxy2012 2012-08-31
  • 打赏
  • 举报
回复
int type = cell.getCellType();
switch (type) {
case Cell.CELL_TYPE_NUMERIC:
if(DateUtil.isCellDateFormatted(cell)){

System.out.println(cell.getDateCellValue());
}else{
double a = cell.getNumericCellValue();
String b = "";
if(String.valueOf(a).toUpperCase().indexOf('E') > -1 ){
b = String.valueOf(new DecimalFormat("#.######").format(a));
}
System.out.println(b);
}
break;
case Cell.CELL_TYPE_STRING:
System.out.println(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
System.out.println(cell.getCellFormula());
break;
case Cell.CELL_TYPE_BLANK:
System.out.println(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_BOOLEAN:
System.out.println(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_ERROR:
System.out.println(cell.getStringCellValue());
break;
default:
System.out.println(cell.getStringCellValue());
break;
}


参考一下,可以去E,保留小数
acertang 2012-08-31
  • 打赏
  • 举报
回复
都取出来了 iDebitAMT1值 也在后台输出:金额:28133.42,说明取法没错,但你存的时候是科学记数的数字,不应该啊。要不你先转成字符串再转数值往数据库插试试。
scbb 2012-08-30
  • 打赏
  • 举报
回复
POI读的时候要按类型调用不同的函数的。
我用下面的代码读取excel中不同类型的数据

switch(cellType)
{
case HSSFCell.CELL_TYPE_NUMERIC:
调用getNumericCellValue();break;
case HSSFCell.CELL_TYPE_STRING:
调用getStringCellValue();break;

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧