博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎样在Android中解析doc、docx、xls、xlsx格式文件
阅读量:6902 次
发布时间:2019-06-27

本文共 8073 字,大约阅读时间需要 26 分钟。

导读:有的时候我们在开发android中需要解析一些我们比较常用的格式,比如doc、docx、xls、xlsx,那么我们要是正常的话就解析不了。这时我们就要用tm-extractors-0.4.jar。

 可以直接复制实验,

       解析doc,要tm-extractors-0.4.jar这个包
       解析xls,要jxl.jar这个包

解析doc

public static String readDOC(String path) {
// 创建输入流读取doc文件 FileInputStream in; String text = null; // Environment.getExternalStorageDirectory().getAbsolutePath()+ "/aa.doc") try {
in = new FileInputStream(new File(path)); int a= in.available(); WordExtractor extractor = null; // 创建WordExtractor extractor = new WordExtractor(); // 对doc文件进行提取 text = extractor.extractText(in); System.out.println("解析得到的东西"+text); } catch (FileNotFoundException e) {
e.printStackTrace(); } catch (Exception e) {
e.printStackTrace(); } if (text == null) {
text = "解析文件出现问题"; } return text; }

解析xls

public static String readXLS(String path) {
String str = ""; try {
Workbook workbook = null; workbook = Workbook.getWorkbook(new File(path)); Sheet sheet = workbook.getSheet(0); Cell cell = null; int columnCount = sheet.getColumns(); int rowCount = sheet.getRows(); for (int i = 0; i < rowCount; i++) {
for (int j = 0; j < columnCount; j++) {
cell = sheet.getCell(j, i); String temp2 = ""; if (cell.getType() == CellType.NUMBER) {
temp2 = ((NumberCell) cell).getValue() + ""; } else if (cell.getType() == CellType.DATE) {
temp2 = "" + ((DateCell) cell).getDate(); } else {
temp2 = "" + cell.getContents(); } str = str + " " + temp2; } str += "\n"; } workbook.close(); } catch (Exception e) {
} if (str == null) {
str = "解析文件出现问题"; } return str; }

 

  解析docx

public static String readDOCX(String path) {
String river = ""; try {
ZipFile xlsxFile = new ZipFile(new File(path)); ZipEntry sharedStringXML = xlsxFile.getEntry("word/document.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(); System.out.println(tag); if (tag.equalsIgnoreCase("t")) {
river += xmlParser.nextText() + "\n"; } break; case XmlPullParser.END_TAG: break; default: break; } evtType = xmlParser.next(); } } catch (ZipException e) {
e.printStackTrace(); } catch (IOException e) {
e.printStackTrace(); } catch (XmlPullParserException e) {
e.printStackTrace(); } if (river == null) {
river = "解析文件出现问题"; } return river; }

解析xlsx

public static String readXLSX(String path) {
String str = ""; String v = null; boolean flat = false; List
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(); } 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; }

原文:

转载于:https://www.cnblogs.com/shanzei/archive/2012/04/06/2419372.html

你可能感兴趣的文章
CentOS7上GitHub/GitLab多帐号管理SSH Key
查看>>
字符串+变量
查看>>
style
查看>>
Log4j配置详解
查看>>
myql 查询树形表结果:说说、说说的述评、评论的回复
查看>>
java基础讲解02-----eclipse快捷方式(2017-04-12 23:47)
查看>>
Eclipse使用Tomcat发布项目时出现YadisException异常解决方案
查看>>
How to do Mathematics
查看>>
[洛谷P4245]【模板】任意模数NTT
查看>>
iOS开发-面试总结(十六)
查看>>
[LeetCode] Unique Binary Search Trees II dfs 深度搜索
查看>>
升级Mac OS X上的git
查看>>
python基础2(数据类型、数据运算、for循环、while循环、列表)
查看>>
应用被强杀了怎么办
查看>>
jquery validate 插件使用心得
查看>>
Windows下安装mysql后,不知道root密码,如果修改root密码
查看>>
Linuxドライバ_LDD3メモ_ハードウェアとの通信
查看>>
数学之美系列四 -- 怎样度量信息?
查看>>
用Access+SharePoint 来收集数据
查看>>
Nginx 的 Location 配置指令块
查看>>