关闭

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

131人阅读 评论(0) 收藏 举报
分类:
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  一篇参考文献


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:993次
    • 积分:51
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类