excel 数据格式问题

  1. public class Poi {  
  2.       
  3.     
  4.     private Sheet sheet;    //表格类实例  
  5.     LinkedList[] result;    //保存每个单元格的数据 ,使用的是一种链表数组的结构  
  6.   
  7.     //读取excel文件,创建表格实例  
  8.     private void loadExcel(String filePath) {  
  9.         FileInputStream inStream = null;  
  10.         try {  
  11.             inStream = new FileInputStream(new File(filePath));  
  12.             Workbook workBook = WorkbookFactory.create(inStream);  
  13.              
  14.             sheet = workBook.getSheetAt(0);           
  15.         } catch (Exception e) {  
  16.             e.printStackTrace();  
  17.         }finally{  
  18.             try {  
  19.                 if(inStream!=null){  
  20.                     inStream.close();  
  21.                 }                  
  22.             } catch (IOException e) {                  
  23.                 e.printStackTrace();  
  24.             }  
  25.         }  
  26.     }  
  27.     //获取单元格的值  
  28.     private String getCellValue(Cell cell) {  
  29.         String cellValue = "";  
  30.         DataFormatter formatter = new DataFormatter();  
  31.         if (cell != null) {  
  32.             //判断单元格数据的类型,不同类型调用不同的方法  
  33.             switch (cell.getCellType()) {  
  34.                 //数值类型  
  35.                 case Cell.CELL_TYPE_NUMERIC:  
  36.                     //进一步判断 ,单元格格式是日期格式   
  37.                     if (DateUtil.isCellDateFormatted(cell)) {  
  38.                         cellValue = formatter.formatCellValue(cell);  
  39.                     } else {  
  40.                         //数值  
  41.                         double value = cell.getNumericCellValue();  
  42.                         int intValue = (int) value;  
  43.                         cellValue = value - intValue == 0 ? String.valueOf(intValue) : String.valueOf(value);  
  44.                     }  
  45.                     break;  
  46.                 case Cell.CELL_TYPE_STRING:  
  47.                     cellValue = cell.getStringCellValue();  
  48.                     break;  
  49.                 case Cell.CELL_TYPE_BOOLEAN:  
  50.                     cellValue = String.valueOf(cell.getBooleanCellValue());  
  51.                     break;  
  52.                     //判断单元格是公式格式,需要做一种特殊处理来得到相应的值  
  53.                 case Cell.CELL_TYPE_FORMULA:{  
  54.                     try{  
  55.                         cellValue = String.valueOf(cell.getNumericCellValue());  
  56.                     }catch(IllegalStateException e){  
  57.                         cellValue = String.valueOf(cell.getRichStringCellValue());  
  58.                     }  
  59.                       
  60.                 }  
  61.                     break;  
  62.                 case Cell.CELL_TYPE_BLANK:  
  63.                     cellValue = "";  
  64.                     break;  
  65.                 case Cell.CELL_TYPE_ERROR:  
  66.                     cellValue = "";  
  67.                     break;  
  68.                 default:  
  69.                     cellValue = cell.toString().trim();  
  70.                     break;  
  71.             }  
  72.         }  
  73.         return cellValue.trim();  
  74.     }  
  75.   
  76.   
  77.   
  78.     //初始化表格中的每一行,并得到每一个单元格的值  
  79.     public  void init(){  
  80.         int rowNum = sheet.getLastRowNum() + 1;  
  81.         result = new LinkedList[rowNum];  
  82.         for(int i=0;i<rowNum;i++){  
  83.             Row row = sheet.getRow(i);  
  84.             //每有新的一行,创建一个新的LinkedList对象  
  85.             result[i] = new LinkedList();  
  86.             for(int j=0;j<row.getLastCellNum();j++){  
  87.                 Cell cell = row.getCell(j);  
  88.                 //获取单元格的值  
  89.                 String str = getCellValue(cell);  
  90.                 //将得到的值放入链表中  
  91.                 result[i].add(str);  
  92.             }  
  93.         }  
  94.     }  
  95.     //控制台打印保存的表格数据  
  96.     public void show(){  
  97.         for(int i=0;i<result.length;i++){  
  98.             for(int j=0;j<result[i].size();j++){  
  99.                 System.out.print(result[i].get(j) + "\t");  
  100.             }  
  101.             System.out.println();  
  102.         }  
  103.     }  
  104.     public static void main(String[] args) {  
  105.         Poi poi = new Poi();  
  106.         poi.loadExcel("jxl.xls");  
  107.         poi.init();  
  108.         poi.show();  
  109.     }  
  110.       
  111. }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值