免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 13606 | 回复: 11
打印 上一主题 下一主题

java poi 读取excel时候的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-04 11:11 |只看该作者 |倒序浏览
写了一个java读取excel表格的小程序
如果没有cell中都是文本类型的话,就可以很容易实现读取(打印出来)
但是如果在excel中cell的数据为数字的话,就不能读取了,必须要在这个数据前面手动加上一个('),这样使其变成一个文本类型的,通过程序自动实现,求解

现在我已经做了判断,但接下来应该如何,做转换呢??
if(cell0.getCellType()==CELL_TYPE_NUMERIC   ¦ ¦   cell1.getCellType()==CELL_TYPE_NUMERIC   ¦ ¦   cell2.getCellType()==CELL_TYPE_NUMERIC){

  1. package   cn.bidlink.test;

  2. import   java.io.FileInputStream;
  3. import   java.io.FileNotFoundException;
  4. import   java.io.IOException;
  5. import   java.util.Date;

  6. import   org.apache.poi.hssf.usermodel.HSSFCell;
  7. import   org.apache.poi.hssf.usermodel.HSSFRow;
  8. import   org.apache.poi.hssf.usermodel.HSSFSheet;
  9. import   org.apache.poi.hssf.usermodel.HSSFWorkbook;
  10. import   org.apache.poi.poifs.filesystem.POIFSFileSystem;

  11. public   class   readxls   {
  12. private   static   final   int   CELL_TYPE_NUMERIC   =   0;

  13. static   String   filename   =   "test.xls";   //   要读取的excel表的文件名称

  14. static   String   c0   =   null;   //   单元格的内容

  15. static   String   c1   =   null;

  16. static   String   c2   =   null;

  17. //   static   String   c3=null;

  18. public   static   void   main(String[]   args)   throws   FileNotFoundException,   IOException,   NullPointerException{
  19.     POIFSFileSystem   file   =new   POIFSFileSystem(new   FileInputStream(filename));   //   打开输入流
  20.     HSSFWorkbook   book   =   new   HSSFWorkbook(file);   //
  21.     HSSFSheet   sheet1   =   book.getSheetAt(0);   //   读取sheet1(book.getSheetAt(0)这里的0表示1!)
  22.     int   total   =   sheet1.getLastRowNum();     //   读取该表的总行数
  23.     System.out.println("loading...");
  24.     System.out.println("共读到数据"   +   total   +   "条");
  25.       try{
  26.         for(int   i   =   0   ;i <=total;i++){
  27.           HSSFRow   rows   =   sheet1.getRow(i);   //   读取sheet1中的第i行
  28.           HSSFCell   cell0   =   rows.getCell((short)0);   //   读取出第i行的第一列
  29.           HSSFCell   cell1   =   rows.getCell((short)1);
  30.           HSSFCell   cell2   =   rows.getCell((short)2);
  31. //   HSSFCell   cell3   =   rows.getCell((short)3);
  32.          
  33. //           if(cell0.getCellType()==CELL_TYPE_NUMERIC   ¦ ¦   cell1.getCellType()==CELL_TYPE_NUMERIC   ¦ ¦   cell2.getCellType()==CELL_TYPE_NUMERIC){
  34. //             //   判断cell是否为数字
  35. //      
  36. //           }
  37.          
  38.          
  39.           c0   =   cell0.getStringCellValue();   //   获取单元格的字符(内容)
  40.           c1   =   cell1.getStringCellValue().trim();
  41.           c2   =   cell2.getStringCellValue().trim();
  42.           //   c3   =   cell3.getStringCellValue();

  43.             System.out.println(c0+"     ¦     "+c1+"     ¦     "+c2);
  44.       
  45.            
  46.         }  
  47.       }catch(Exception   e){
  48.         e.printStackTrace();
  49.       }
  50.     }
  51. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2007-12-04 23:26 |只看该作者
该如何,有什么问题了?

论坛徽章:
0
3 [报告]
发表于 2007-12-06 15:27 |只看该作者

该如何做转换呢!!??

该如何做转换呢!!??

论坛徽章:
0
4 [报告]
发表于 2007-12-06 17:34 |只看该作者
if(cell0.getCellType()==CELL_TYPE_NUMERIC) {
   /* 伪代码
    cell0.value = "'" + cell0.value;
   */
}
if(cell1.getCellType()==CELL_TYPE_NUMERIC) {
   /* 伪代码
    cell1.value = "'" + cell1.value;
   */
}
。。。
想这样做?

论坛徽章:
0
5 [报告]
发表于 2007-12-14 16:33 |只看该作者
你的方法,我试过了,这样仍然不能解决
我请教过很多朋友,他们说这poi读取excel时候,就只能读取字符串型的
您还有更好的方法吗?

论坛徽章:
0
6 [报告]
发表于 2007-12-14 16:53 |只看该作者
我是这样做的

if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
        str = cell.getStringCellValue();
} else {
        str = String.valueOf((long) cell.getNumericCellValue());
} //~if~else

论坛徽章:
0
7 [报告]
发表于 2007-12-18 09:13 |只看该作者
你可以在excel里先把数字以文本的形式保存起来.如果你要导入数据库的话,而数据库中对应的字段又是int型的.所以只要再程序中转换一下就可以了。不需要想的太复杂.

论坛徽章:
0
8 [报告]
发表于 2007-12-29 15:20 |只看该作者

回复 #7 xiaojunhu 的帖子

你的想法很好
我的意思是想把excel中的内容直接读取出来然后自动转换文本格式
如果手动更改成文本格式(还不如直接往数据库中录入呢!)
我们一般的excel表格信息中有相当多的数据!

论坛徽章:
0
9 [报告]
发表于 2007-12-31 11:02 |只看该作者
学习中!

论坛徽章:
0
10 [报告]
发表于 2008-01-01 22:10 |只看该作者
不是有getNumericCellValue()吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP