![](/img/trans.png)
[英]How to read the json data file I downloaded from firebase as gson?
[英]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.