admin管理员组文章数量:1122852
解析office文件(doc,xls,ppt,等)
//doc文件public static String readDOC(String path) {// 创建输入流读取doc文件FileInputStream in;String text = null;path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+path;try {in = new FileInputStream(new File(path));int a= in.available();WordExtractor extractor = null;// 创建WordExtractorextractor = 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
//xls文件public static String readXLS(String path) {String str = "";path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+path;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) {e.printStackTrace();}if (str == null) {str = "解析文件出现问题";}System.out.println("解析得到的东西"+str);return str;}
docx
// 解析docxpublic static String readDOCX(String path) {String river = "";path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+path;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
// 解析xlsxpublic static String readXLSX(String path) {String str = "";String v = null;boolean flat = false;List<String> ls = new ArrayList<String>();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;}
pptx
public static String readPPTX(String path) {List<String> ls = new ArrayList<String>();String river = "";ZipFile xlsxFile = null;try {xlsxFile = new ZipFile(new File(path));// pptx按照读取zip格式读取} catch (ZipException e1) {e1.printStackTrace();} catch (IOException e1) {e1.printStackTrace();}try {ZipEntry sharedStringXML = xlsxFile.getEntry("[Content_Types].xml");// 找到里面存放内容的文件InputStream inputStream = xlsxFile.getInputStream(sharedStringXML);// 将得到文件流XmlPullParser xmlParser = Xml.newPullParser();// 实例化pullxmlParser.setInput(inputStream, "utf-8");// 将流放进pull中int evtType = xmlParser.getEventType();// 得到标签类型的状态while (evtType != XmlPullParser.END_DOCUMENT) {// 循环读取流switch (evtType) {case XmlPullParser.START_TAG: // 判断标签开始读取String tag = xmlParser.getName();// 得到标签if (tag.equalsIgnoreCase("Override")) {String s = xmlParser.getAttributeValue(null, "PartName");if (s.lastIndexOf("/ppt/slides/slide") == 0) {ls.add(s);}}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();}for (int i = 1; i < (ls.size() + 1); i++) {// 假设有6张幻灯片river += "第" + i + "张················" + "\n";try {ZipEntry sharedStringXML = xlsxFile.getEntry("ppt/slides/slide"+ i + ".xml");// 找到里面存放内容的文件InputStream inputStream = xlsxFile.getInputStream(sharedStringXML);// 将得到文件流XmlPullParser xmlParser = Xml.newPullParser();// 实例化pullxmlParser.setInput(inputStream, "utf-8");// 将流放进pull中int evtType = xmlParser.getEventType();// 得到标签类型的状态while (evtType != XmlPullParser.END_DOCUMENT) {// 循环读取流switch (evtType) {case XmlPullParser.START_TAG: // 判断标签开始读取String tag = xmlParser.getName();// 得到标签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;}
Activity
//得到高度Display display = this.getWindowManager().getDefaultDisplay();height = display.getHeight();width = display.getWidth();String url = "aa.doc";
//打开文件this.setContentView(R.layout.show); lay_show = (LinearLayout) this.findViewById(R.id.show_layout); //设置阅读背景(平铺)Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.rebg); BitmapDrawable bd1 = new BitmapDrawable(bitmap1); bd1.setTileModeXY(TileMode.REPEAT , TileMode.REPEAT ); bd1.setDither(true); lay_show.setBackgroundDrawable(bd1); //添加线性参数lp_show = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); lp_show.height=height;lp_show.weight=width;TextView tv = new TextView(this);tv.setTextSize(14);tv.setTextColor(Color.WHITE);tv.setWidth(width);lay_show.addView(tv,lp_show);
tv.setText(readDOC(url));
以上方法只能读取字符流,不能读取图片。
方法二,利用手机已安装的软件读取。
//android获取一个用于打开HTML文件的intent
public static Intent getHtmlFileIntent( String param )
{
Uri uri = Uri.parse(param ).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("content").encodedPath(param ).build();
Intent intent = new Intent("android.intent.action.VIEW");
intent.setDataAndType(uri, "text/html");
return intent;
}
//android获取一个用于打开图片文件的intent
public static Intent getImageFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "image/*");
return intent;
}
//android获取一个用于打开PDF文件的intent
public static Intent getPdfFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "application/pdf");
return intent;
}
//android获取一个用于打开文本文件的intent
public static Intent getTextFileIntent( String param, boolean paramBoolean)
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (paramBoolean)
{
Uri uri1 = Uri.parse(param );
intent.setDataAndType(uri1, "text/plain");
}
else
{
Uri uri2 = Uri.fromFile(new File(param ));
intent.setDataAndType(uri2, "text/plain");
}
return intent;
}
//android获取一个用于打开音频文件的intent
public static Intent getAudioFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("oneshot", 0);
intent.putExtra("configchange", 0);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "audio/*");
return intent;
}
//android获取一个用于打开视频文件的intent
public static Intent getVideoFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("oneshot", 0);
intent.putExtra("configchange", 0);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "video/*");
return intent;
}
//android获取一个用于打开CHM文件的intent
public static Intent getChmFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "application/x-chm");
return intent;
}
//android获取一个用于打开Word文件的intent
public static Intent getWordFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "application/msword");
return intent;
}
//android获取一个用于打开Excel文件的intent
public static Intent getExcelFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "application/vnd.ms-excel");
return intent;
}
//android获取一个用于打开PPT文件的intent
public static Intent getPptFileIntent( String param )
{
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(new File(param ));
intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
return intent;
}
用下边代码触发
Intent it = getWordFileIntent(url);
startActivity(it);
推荐下开的淘宝小店筱夜宫主(/)DR.HU 胡博士美妆~坐在电脑旁的汉子姑娘注意脸部护理呀,做了程序媛,也要美丽啊。。。小店有优惠码:YE4450,报优惠码,抵两元券,(⊙o⊙)…
本文标签: 解析office文件(docxlsppt等)
版权声明:本文标题:解析office文件(doc,xls,ppt,等) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1702148830a546360.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论