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

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 ss = parse(new File("C:/Users/Administrator/Desktop/**.xls"));
        if (ss.size()>0) {
            for (int i = 2; 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 parse(File file) {    
        List excelValueList = new ArrayList();    
        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  一篇参考文献


你可能感兴趣的:(public)