最近小弟的项目中有需要读取word与excel的模块,研究了一下,把心得分享给大家.
首先是布局文件
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/et_url"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="请选择或输入文件路径"/>
<Button
android:id="@+id/bt_url"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择路径"/>
</LinearLayout>
<Button
android:id="@+id/bt_open"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="打开文件"/>
activity代码:
/*输入路径*/
etUrl = (EditText) findViewById(R.id.et_url);
/*自己选择路径*/
btUrl = (Button) findViewById(R.id.bt_url);
/*打开文件*/
btOpen = (Button) findViewById(R.id.bt_open);
btUrl.setOnClickListener(this);
btOpen.setOnClickListener(this);
/*选择文件路径*/
case R.id.bt_url:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");//设置类型,我这里是任意类型,任意后缀的可以这样写。
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, 1);
break;
/*打开文件*/
case R.id.bt_open:
if (fileUrl!= null) {
try {
File file = new File(fileUrl);
Intent intent2 = new Intent("android.intent.action.VIEW");
intent2.addCategory("android.intent.category.DEFAULT");
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(file);
//application/msword
//application/vnd.ms-excel
if (fileUrl.contains(".docx")){
intent2.setDataAndType(uri, "application/msword");
}else if (fileUrl.contains(".xlsx")){
intent2.setDataAndType(uri, "application/vnd.ms-excel");
}else {
intent2.setDataAndType(uri, "text/plain");
}
startActivity(intent2);
} catch (Exception e) {
//没有安装第三方的软件会提示
Toast toast = Toast.makeText(DayweekManagerActivity.this, "没有找到打开该文件的应用程序", Toast.LENGTH_SHORT);
toast.show();
}
// Intent intent2 = new Intent();
// intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// intent2.setAction(Intent.ACTION_VIEW);
// intent2.setDataAndType((Uri) etUrl.getText(), "text/plain");
// startActivity(intent2);
} else {
Toast.makeText(this, "请选择或输入文件路径", Toast.LENGTH_SHORT).show();
return;
}
break;
/*接收到刚才选择的文件路径*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
if (requestCode == 1) {
Uri uri = data.getData();
etUrl.setText(uri.getPath().toString());
fileUrl = etUrl.getText().toString();
}
}
}
好了,代码到这里就结束了,喜欢就给个赞吧!