繁体   English   中英

有没有办法读取从 Firebase 下载的 Excel 文件?

[英]There is a way to read a Excel file downloaded from Firebase?

我的 android 应用程序有问题; 我希望用户可以在 Firebase 上上传 excel 文件,并使用该文件上的数据填充 RecyclerView。 我没有关于填充 RecyclerView 的问题,我知道该怎么做,我在读取文件时遇到了问题。 我用这个上传到 Firebase 上:

StorageReference stRef = storageRef.child("clienti.xlsx");
UploadTask task = stRef.putFile(file);
task.addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception exception) {
                    Toast.makeText(getActivity(), "Upload error: "+exception.getMessage() , Toast.LENGTH_SHORT).show();
                }
            }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    downloadFile("clienti");

                }

到目前为止一切正常,我还将文件从 firebase 下载到特定文件夹,但现在我不知道如何“读取”它并从中获取数据; 我试过这个,但它总是对我说该文件不存在。

String[][] arrays = read( Environment.getExternalStorageDirectory() + localFile.getPath());

            if(arrays == null){strHyouji="no such file";}else{

                for (String[] array : arrays) {
                    for (String v : array) {
                        strHyouji = strHyouji + v + ",";
                    }
                    strHyouji = strHyouji + "\n";
                    aList.add(strHyouji);
                }
            }


            Toast.makeText(getActivity(), strHyouji, Toast.LENGTH_SHORT).show();

这里的 read() 方法:

Workbook workbook = null;
    try {
        WorkbookSettings ws = new WorkbookSettings();
        ws.setGCDisabled(true);



        workbook = Workbook.getWorkbook(new File(dbStr), ws);
        Sheet sheet = workbook.getSheet(0);

        int rowCount = sheet.getRows();
        String[][] result = new String[rowCount][];
        for (int i = 0; i < rowCount; i++) {
            Cell[] row = sheet.getRow(i);

            result[i] = new String[row.length];
            for (int j = 0; j < row.length; j++) {
                result[i][j] = row[j].getContents();
            }
        }
        return result;


    } catch (BiffException e) {
        strHyouji=strHyouji+ e.toString();

    } catch (IOException e) {
        strHyouji=strHyouji+ e.toString();
    } catch (Exception e) {
        strHyouji=strHyouji+ e.toString();
    } finally {
        if (workbook != null) {
            workbook.close();
        }
    }

    return null;

使用 Apache POI,您可以读取 excel。 这里ColumnHeaderString是 excel 表的实际列 header , datafromcell是 header 下转换为String的值。

读取文件

File file = new File( path ) // String file path
FileInputStream fileInputStream = new FileInputStream( file )
XSSFWorkbook workbook = new XSSFWorkbook( fileInputStream )

使用工作簿

    XSSFSheet sheet = workbook.getSheetAt( 0 );
    private DataFormatter excelDataFormatter = new DataFormatter()

    Iterator<Row> rowIterator = sheet.rowIterator();
    Row header = null;
    if( rowIterator.hasNext() )
    {
        header = rowIterator.next();
    }
    while( rowIterator.hasNext() )
    {
        Iterator<Cell> cellIterator = row.cellIterator();
        while( cellIterator.hasNext() )
        {
            Cell cell = cellIterator.next();
            int cellIndex = cell.getColumnIndex();
            String colHead = header.getCell( cellIndex ).toString();

            if( ColumnHeaderString.equals( colHead ) )  // Match the desired column header
            {
                String datafromcell = excelDataFormatter.formatCellValue( cell ).strip();
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM