poi如何读出excel单元格数据

qianben 2004-10-20 08:52:46
由于数据有时候是字符串,有时候是数值,有时候是日期,也有时为空值,该如何处理。
...全文
547 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
debug148 2004-11-09
ding
回复
cdk 2004-10-20
小数点用字符串处理来去掉。
回复
cdk 2004-10-20
用try{}catch(){}来完成你的需要。
回复
jerrykey 2004-10-20
http://dev.csdn.net/develop/article/41/41897.shtm
回复
qianben 2004-10-20
cell.getStringCellValue() 只能读字符串
cell.getNumbericCellValue() 能读数值型,但读出来的数值有小数点,如123.0
还有就是遇到单元格为空时来出错,该如何判断单元格为空
回复
wangnewton 2004-10-20
看看这段代码,应该会对你有点用

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileInputStream;
public class ReadXL {
 /** Excel文件的存放位置。注意是正斜线*/
 public static String fileToBeRead="D:/JTest/ gongye.xls";
 public static void main(String argv[]){
 try{
  // 创建对Excel工作簿文件的引用
  HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
  // 创建对工作表的引用。
  // 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
  HSSFSheet sheet = workbook.getSheet("Sheet1");
  // 也可用getSheetAt(int index)按索引引用,
  // 在Excel文档中,第一张工作表的缺省索引是0,
  // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
  // 读取左上端单元
  HSSFRow row = sheet.getRow(0);
  HSSFCell cell = row.getCell((short)0);
  // 输出单元内容,cell.getStringCellValue()就是取所在单元的值
  System.out.println("左上端单元是: " + cell.getStringCellValue());
 }catch(Exception e) {
  System.out.println("已运行xlRead() : " + e );
 }
}
}


回复
gow 2004-10-20
用HSSFCell的getCellType()只能判断三种类型,返回值为int 0,1,2
numeric(0), formula(2) or string(1)
但是仅仅依靠这个来判断只能取得单元格的值,但是不能完全解决问题。
有时候需要用HSSFDataFormat来共同判断,例如:
String s=workbook.createDataFormat().getFormat((short)cell.getCellStyle().getDataFormat());
这样s就是单元格格式的表示法。
根据这两个方面的信息可能会更好的去做后续的处理,如果单元格内容为3456,在excel中单元格的格式设置为"文本",应该就不会有问题了,如果没有设置,是常规的格式,poi默认数字为numeric,这样就会出现小数点了,然后根据单元格的格式信息,再把小数点去掉,做后续的处理,这样应该更好一些吧。getCellType()的返回值为0,s值为 General,得到这样的信息我想就更好处理了吧。现在我也再看这方面的东西,大家共同努力吧。
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告