Android无法打开.xls文件

时间:2017-06-19 12:06:11

标签: android excel

在我的应用程序中,我有一些数据,我想在Excel表格中显示。

前几天我已经设法构建了.xls文件。

我也可以通过电子邮件发送此代码:

 FileOutputStream fos = null;
            try {
                file = new File(getContext().getFilesDir(), (main.getNomeAzienda() + "" + getDate(System.currentTimeMillis(), "dd-MM-yyyy_HH-mm")) + ".xls");
                fos = new FileOutputStream(file);
                workbook.write(fos);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (fos != null) {
                    try {
                        fos.flush();
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }


                            Intent i = new Intent(Intent.ACTION_SEND);
                            i.setType("message/rfc822");
                            i.putExtra(Intent.EXTRA_EMAIL, new String[]{FirebaseAuth.getInstance().getCurrentUser().getEmail()});
                            i.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(getActivity(), "com.example.authority.fileprovider", file));
                            i.putExtra(Intent.EXTRA_SUBJECT, "Raccolto globale aSista");
                            i.putExtra(Intent.EXTRA_TEXT, "In allegato il File Excel con i dati filtrati.");
                            try {
                                startActivity(Intent.createChooser(i, "Seleziona il Client di posta che vuoi utilizzare..."));
                            } catch (android.content.ActivityNotFoundException ex) {
                                Snackbar.make(main.getFab(), "Non ci sono client di posta disponibili installati sul dispositivo.", Snackbar.LENGTH_SHORT).show();
                            }

                }
                Snackbar.make(main.getFab(), "Foglio Excel generato.", Snackbar.LENGTH_SHORT).show();

很抱歉,如果代码的某些部分是意大利语。

无论如何,现在我想直接在手机上显示excel文件。

我下载了一些应该能够显示.xls文件的应用程序。与Excelthis one from googlepolaris office一样。

使用此代码,我调用intent,要求用户选择其中一个应用程序并打开文件:

   Uri path = Uri.fromFile(finalFile);
                            Intent excelIntent = new Intent(Intent.ACTION_VIEW);
                            excelIntent.setDataAndType(path , "application/vnd.ms-excel");
                            excelIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            try {
                                startActivity(excelIntent);
                            }
                            catch (ActivityNotFoundException e) {
                                Snackbar.make(main.getFab(),"Impossibile aprire il file su questo dispositivo",Snackbar.LENGTH_LONG).show();
                            }

我遇到了与文件名相关的一些问题,这些问题不应包含一些特殊字符。然后我终于能够开始打开文件,但现在我遇到了问题。

Excel告诉我"无法打开文件,发生错误"。

Google也是如此。

Polaris不显示错误,但显示空文件。

1 个答案:

答案 0 :(得分:3)

您的文件位于getFilesDir()。这是internal storage的一部分,第三方应用无法访问您的部分内部存储空间。

由于您已经设置了FileProvider,因此请使用FileProvider Uri,并使用Intent.FLAG_GRANT_READ_URI_PERMISSION为其他应用提供临时读取权限。