Luca
Luca

Reputation: 833

Android open XLSX file

I'm trying to open an XLSX file within my Android App.

I'm aware that the Intent type I have to fire is application/excel, but despite I've installed Google Sheets, my code says that no application can open my excel file.

This is the code I use to fire the Intent:

private void openXLS(){
        File xls = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "prova.xlsx");
        Uri path = Uri.fromFile(xls);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(path, "application/excel");
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        try {
            context.startActivity(intent);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(context, "No Application available to view XLS", Toast.LENGTH_SHORT).show();
        }
    }

Note: prova.xlsx exists, and I'm able to reach it and open it.

Upvotes: 3

Views: 11737

Answers (2)

Satyawan Hajare
Satyawan Hajare

Reputation: 1132

private void openXLS(final String path) {
    File file = new File(path);
    Uri uri ;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                uri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", file);
            } else {
                uri = Uri.fromFile(file);
            }

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.setDataAndType(path, "application/vnd.ms-excel");
    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
    try {
        startActivity(intent);
    } catch (ActivityNotFoundException e) {
        Toast.makeText(this, "Application not found", Toast.LENGTH_SHORT).show();
    }
}

Upvotes: 1

Luca
Luca

Reputation: 833

SOLVED

Using the MIME type application/vnd.ms-excel, *.xls and *.xlsx files can be opened.

Upvotes: 11

Related Questions