android 读取xlsx文件,android怎么解析表格.xlsx文件

在網上搜了一下,現在用的是jxl.jar2.6.12解析xlsx文件,但只能解析到51行,后面的獲取不到了,這是什么問題?

用的是網上的這段代碼

http://www.open-open.com/home/space-37924-do-blog-id-5872.html

public static String readXLSX(String path) {

String str = "";

String v = null;

boolean flat = false;

ArrayList ls = new ArrayList();

try {

ZipFile xlsxFile = new ZipFile(new File(path));

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/sheet1.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) {

str += ls.get(Integer.parseInt(v)) + "  ";

} else {

str += v + "  ";

}

}

}

break;

case XmlPullParser.END_TAG:

if (xmlParsersheet.getName().equalsIgnoreCase("row") && v != null) {

str += "\n";

}

break;

}

evtTypesheet = xmlParsersheet.next();

}

Log.e("", str);

//            System.out.println(str);

} catch (ZipException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (XmlPullParserException e) {

e.printStackTrace();

}

if (str == null) {

str = "解析文件出現問題";

}

return str;

}

2 个解决方案

#1

今天試了下poi解析,java project沒問題,但導入到android工程下就會出現:Too many method references的錯誤。雖然可以解決,但是大概了解了下poi一般在服務端用,客戶端用poi太大了。所以還是考慮用jxl,但就是解析不完,求大俠指點!!

#2

換成jxl解析,把xlsx轉成xls,然后用解析xls的代碼解析成功了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值