注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

You cannot get a string value from a numeric cell解决方案  

2013-02-19 16:48:35|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

       使用POI对excel表数据进行操作时出现了该问题,从数据库导出数据到excel表中,datetime类型的数据以String类型存储,当对表内的该列数据做修改后,excel将自动修改单元格的格式,从而导致在重新读取时出现了以上错误。


You cannot get a string value from a numeric cell 问题报错提示。

解决办法请见下面红色字体内容!
在读取excle表格存入数据库时候出现了这个问题package db;

 

import java.io.FileInputStream; 
import java.io.InputStream; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.util.ArrayList; 
import java.util.List;

import org.apache.poi.hssf.model.Sheet; 
import org.apache.poi.hssf.model.Workbook; 
import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class Excel { 
public static DbConn DB = new DbConn(); 
public static void main(String[] args) throws Exception { 
int num = 5; 
int i = 0; 
int b = 0; 
int j = 0; 
try { 
Connection con = DB.getConnection(); 
String sql = "insert into b(v_area_name,v_phonenum,v_month) values(?,?,?)"; 
PreparedStatement pre = null; 
pre = con.prepareStatement(sql); 
List list = new ArrayList(); 
InputStream in = new FileInputStream("d:/c.xls"); 
HSSFWorkbook jlw = new HSSFWorkbook(in); 
HSSFSheet sh = jlw.getSheetAt(1); 
if (sh == null) { 
in.close(); 
} else { 
int number = sh.getPhysicalNumberOfRows(); 
if (number < 1) { 
in.close(); 
} else { 
HSSFRow row = null; 
try{ 
while (i < number) { 
for(;i<number;i++){ 
row = sh.getRow(i); 
pre.setString(1, row.getCell((short)0).getStringCellValue()); 
pre.setString(2, String.valueOf((long)row.getCell((short)1).getNumericCellValue()));//这样就可以解决了,如果数据比较小,用int也行 
pre.setString(3,"200909"); 
pre.addBatch(); 
j++; 
if (j % num == 0) { 
pre.executeBatch(); 
pre.clearParameters(); 
pre.clearBatch(); 
b = number - j; 



}catch(Exception e){ 
e.printStackTrace(); 

if (b < num) { 
System.out.println(b); 
pre.executeBatch(); 



} catch (Exception e) { 
e.printStackTrace(); 


}

  评论这张
 
阅读(776)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016