POI学习笔记

 

        最近由于项目关系,接触到POI技术。跟着官网上的HOTOs一路做下来,真感概POI功能的强大和使用的傻瓜。五分钟,包学报会。

        自己感觉跟java swing差不多,在一个‘父组件’上新增‘子组件’,一层套一层,如:

            HSSFWorkbook book = new HSSFWorkbook();
            HSSFSheet sheet = book.createSheet("sheet1");
            HSSFRow row = sheet.createRow(0);

         需要注意到有两个问题:

1. 中文乱码

         解决方案:为每个需要显示中文的HSSFCell设置编码格式,即

   HSSFCell cell = row.createCell((short) counter);
   cell.setEncoding(HSSFCell.ENCODING_UTF_16);

         POI这里设计的不是很合理,无法直接设置某一行或某一列的编码格式,而是需要一个一个cell地去设置,唉,写到手酸。。。不停Ctrl+C Ctrl+V 。。。。

2. 数据格式

        转换后的excel文档里面总是把数字写成科学计数法那样的形式(形如5.5E12),但有些时候又不想让他转换,比如输入的是银行卡号或流水账号。我试图在存放之前就设置cell的格式为STRING,但是没有用,打开excel仍然是科学计数法。当再次读取文件内容时,无法将这些科学计数法表示的数字直接转化成字符串。

        解决方案:使用BigDecimal去处理:

      switch(cellType){
         case HSSFCell.CELL_TYPE_NUMERIC:
           BigDecimal value =  new BigDecimal(cell.getNumericCellValue());
       cellValue = value.toString(); 
           break;
      
         case HSSFCell.CELL_TYPE_STRING:
                     cellValue = cell.getStringCellValue();
           break;
    
              }

其他常见用法见:

http://poi.apache.org/hssf/index.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值