android用jxl读取Excel(2003,2007)

public class ExcelUtils {
    public static List<String[]> readExcel(String filePath) throws Exception {
        return readExcel(filePath, 0);
    }

    public static List<String[]> readExcel(String filePath, int sheet) throws Exception {
        if (filePath.trim().toLowerCase().endsWith(".xls")) {
            return readXLS(new File(filePath), sheet);
        } else {
            return readXLSX(new File(filePath), sheet);
        }
    }

    public static List<String[]> readXLS(File file, int sheetIndex) throws Exception {
        List<String[]> list = new ArrayList<String[]>();
        Workbook workbook = null;
        try {
            workbook = Workbook.getWorkbook(file);
            Sheet sheet = workbook.getSheet(sheetIndex);
            int columnCount = sheet.getColumns();
            int rowCount = sheet.getRows();
            for (int i = 0; i < rowCount; i++) {
                String[] item = new String[columnCount];
                for (int j = 0; j < columnCount; j++) {
                    Cell cell = sheet.getCell(j, i);
                    String str = "";
                    if (cell.getType() == CellType.NUMBER) {
                        str = ((NumberCell) cell).getValue() + "";
                    } else if (cell.getType() == CellType.DATE) {
                        str = "" + ((DateCell) cell).getDate();
                    } else {
                        str = "" + cell.getContents();
                    }
                    item[j] = str;
                }
                list.add(item);
            }
        } finally {
            if (workbook != null)
                workbook.close();
        }
        return list;
    }

    public static List<String[]> readXLSX(File file, int sheet) throws Exception {
        List<String[]> list = new ArrayList<String[]>();
        ArrayList<String> item = new ArrayList<String>();
        String v = null;
        boolean flat = false;
        List<String> ls = new ArrayList<String>();
        ZipFile xlsxFile = new ZipFile(file);
        ZipEntry sharedStringXML = xlsxFile
                .getEntry("xl/sharedStrings.xml");
        InputStream inputStream = xlsxFile.getInputStream(sharedStringXML);
        XmlPullParser xmlParser = Xml.newPullParser();
        xmlParser.setInput(inputStream, "utf-8");
        int evtType = xmlParser.getEventType();
        while (evtType != XmlPullParser.END_DOCUMENT) {
            switch (evtType) {
                case XmlPullParser.START_TAG:
                    String tag = xmlParser.getName();
                    if (tag.equalsIgnoreCase("t")) {
                        ls.add(xmlParser.nextText());
                    }
                    break;
                case XmlPullParser.END_TAG:
                    break;
                default:
                    break;
            }
            evtType = xmlParser.next();
        }
        ZipEntry sheetXML = xlsxFile.getEntry("xl/worksheets/sheet" + (sheet + 1) + ".xml");
        InputStream inputStreamsheet = xlsxFile.getInputStream(sheetXML);
        XmlPullParser xmlParsersheet = Xml.newPullParser();
        xmlParsersheet.setInput(inputStreamsheet, "utf-8");
        int evtTypesheet = xmlParsersheet.getEventType();
        while (evtTypesheet != XmlPullParser.END_DOCUMENT) {
            switch (evtTypesheet) {
                case XmlPullParser.START_TAG:
                    String tag = xmlParsersheet.getName();
                    if (tag.equalsIgnoreCase("row")) {
                    } else if (tag.equalsIgnoreCase("c")) {
                        String t = xmlParsersheet.getAttributeValue(null, "t");
                        if (t != null) {
                            flat = true;
                            System.out.println(flat + "有");
                        } else {
                            System.out.println(flat + "没有");
                            flat = false;
                        }
                    } else if (tag.equalsIgnoreCase("v")) {
                        v = xmlParsersheet.nextText();
                        if (v != null) {
                            if (flat) {
                                item.add(ls.get(Integer.parseInt(v)));
                            } else {
                                item.add(v);
                            }
                        }
                    }
                    break;
                case XmlPullParser.END_TAG:
                    if (xmlParsersheet.getName().equalsIgnoreCase("row")
                            && v != null) {
                        list.add(item.toArray(new String[item.size()]));
                        item = new ArrayList<String>();
                    }
                    break;
            }
            evtTypesheet = xmlParsersheet.next();
        }
        return list;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值