Android 打开本地Excel文件,手工选择文件夹
时间: 2024-04-14 10:28:17 浏览: 122
要在Android中打开本地的Excel文件,并允许用户手动选择文件夹,您可以使用`Intent`来调用系统的文件选择器。以下是一个示例代码:
```java
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.DocumentsContract;
import android.provider.OpenableColumns;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_PICK_FILE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 调用文件选择器
openFilePicker();
}
private void openFilePicker() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/vnd.ms-excel"); // 设置文件类型为Excel文件
startActivityForResult(intent, REQUEST_PICK_FILE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_PICK_FILE && resultCode == RESULT_OK && data != null) {
Uri fileUri = data.getData();
// 处理文件URI
handleFileUri(fileUri);
}
}
private void handleFileUri(Uri fileUri) {
// 获取文件名
String fileName = getFileName(fileUri);
// TODO: 在这里处理Excel文件,例如解析文件内容等
}
@NonNull
private String getFileName(Uri uri) {
String fileName = null;
if (uri.getScheme().equals("content")) {
try (Cursor cursor = getContentResolver().query(uri, null, null, null, null)) {
if (cursor != null && cursor.moveToFirst()) {
fileName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
}
}
} else if (uri.getScheme().equals("file")) {
fileName = uri.getLastPathSegment();
}
return fileName != null ? fileName : "";
}
}
```
在这个示例中,我们使用`Intent`调用了系统的文件选择器,并设置文件类型为Excel文件(MIME类型为`application/vnd.ms-excel`)。当用户选择了一个文件后,`onActivityResult`方法会被调用,并传递选中的文件URI。然后,您可以在`handleFileUri`方法中处理文件URI,例如获取文件名或解析Excel文件内容等。
请注意,为了正确获取文件名,我们使用`getFileName`方法,在`content` scheme和`file` scheme下进行不同的处理。
这样,您就可以在Android应用中打开本地的Excel文件,并允许用户手动选择文件夹。
阅读全文