java 基于jxl解析xls以及解决丢失精度问题

原创 2016年05月30日 20:26:45
package com.heyikeji;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class sss {//发现命名方式还是这么屌
    
    public static void main(String[] args) {
        StringBuffer sql = new StringBuffer();
        sql.append("INSERT INTO example VALUES ");//拼个SQL
        List<String[]> ss = parse(new File("C:/Users/Administrator/Desktop/**.xls"));
        if (ss.size()>0) {
            for (int i = 2; i <ss.size(); i++) {
                sql.append("(");
                String[] sd = ss.get(i);
                for (int j = 0; j < sd.length; j++) {
                    if (j != sd.length-1) {
                        sql.append("'"+sd[j]+"',");    
                    }else {
                        sql.append("'"+sd[j]+"'");
                        sql.append("),");
                    }
                }
            }
        }
        System.out.println(sql.toString());
    }
    public static List<String[]> parse(File file) {    
        List<String[]> excelValueList = new ArrayList<String[]>();    
        if (file.exists() && file.canRead()    
                && (file.getName().lastIndexOf(".xls") >= 1)) {    
            Workbook workbook = null;    
            try {    
                workbook = Workbook.getWorkbook(file);    
                Sheet sheet = workbook.getSheet(0);    
                int row = sheet.getRows();    
                int col = sheet.getColumns();    
                for (int r = 0; r < row; r++) {    
                    String[] rowValue = new String[col];    
                    for (int c = 0; c < col; c++) {    
                        if (r>1 && (c==1 || c==2)) {//业务限制
                            NumberCell cell = (NumberCell) sheet.getCell(c,r);//解决double精度丢失问题
                            double ii = cell.getValue();
                            rowValue[c] =String.valueOf(ii);
                        }else {
                            rowValue[c] = sheet.getCell(c, r).getContents() != null ? sheet    
                                    .getCell(c, r).getContents()    
                                    : "";    
                        }
                    }    
                    excelValueList.add(rowValue);    
                }    
            } catch (BiffException e) {    
                e.printStackTrace();    
            } catch (IOException e) {    
                e.printStackTrace();    
            } finally {    
                if (workbook != null) {    
                    workbook.close();    
                }    
            }    
        }    
        return excelValueList;    
    }    

}

注:/解析excel的时候会默认当前输入的时间为格林威治时间,需要转为当前时区的时间(之前8小时)

http://blog.csdn.net/wangwuyilove/article/details/45643749  一篇参考文献


jxl使用总结(java 操作xls神器)

jxl,是项目中使用操作xls的东西,这里大概写个总结,说不定将来会用到呢,也说不定能帮到其他人。 一、 jxl,是个第三方框架,官网是:http://www.andykhan.com/jexcela...
  • Felcx
  • Felcx
  • 2015年11月02日 16:27
  • 274

java使用jxl导出数据到xls文件

import jxl.*; import jxl.write.*; import java.io.*; import java.io.File.*; import java.u...

java 用jxl导出XLS文件,大量数据多个sheet存储

import java.io.File; import java.util.ArrayList; import java.util.List; import jxl.Workbook; import...

java jxl xls

http://www.iteye.com/topic/26574jxl是一个*国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelA...

Java中double和float精度丢失问题及解决方法

原文地址:http://www.cnblogs.com/cblogs/p/double-precision.html 在讨论两位double数0.1和0.2相加时,毫无疑问他们相加的结果是0.2。...

java中double和float精度丢失问题及解决方法

java中double和float精度丢失问题及解决方法 在讨论两位double数0.1和0.2相加时,毫无疑问他们相加的结果是0.2。但是问题总是如此吗? 下面我们让下面...
  • JAVA_96
  • JAVA_96
  • 2016年12月10日 10:36
  • 179

java中double和float精度丢失问题及解决方法

在讨论两位double数0.1和0.2相加时,毫无疑问他们相加的结果是0.2。但是问题总是如此吗? 下面我们让下面两个doubles数相加,然后看看输出结果: @Test ...

java海量数据导出xls分页解决报内存溢出问题

/**      * 写XLS文件      * @param fileName 文件名(全路径)      * @param colTitleList 标题      * @param co...

POI使用:用poi接口不区分xls/xlsx格式解析Excel文档(41种日期格式解析方法,5种公式结果类型解析方法,3种常用数值类型精度控制办法)

一、使用poi解析excel文档 注:全部采用poi接口进行解析,不需要区分xls、xlsx格式,不需要判断文档类型。 poi中的日期格式判断仅支持欧美日期习惯,对国内的日期格式并不支持判断,怎么办?...
  • eguid_1
  • eguid_1
  • 2016年07月22日 11:42
  • 2237

[经验小结]jxl写excel时产生“java.lang.ArrayIndexOutOfBoundsException: 5”问题的解决办法

最近在做一个报表生成系统,为了方便,采用了Servlet + jxl的方式进行报表生成,以excel的形式导出。但是在导出过程中发现了一些问题,研究了很久,也在网上查了很多资料,但是解决方法都不一样,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 基于jxl解析xls以及解决丢失精度问题
举报原因:
原因补充:

(最多只允许输入30个字)