javaandroidfirebase-realtime-databaseandroid-json

Convert FirebaseDatabase jsonObject to jsonArray and then that jsonArray to .xlsx format


I'm getting DataSnapshot from a Firebase database as a JsonObject. I have to convert this JsonObject into JsonArray and then that JsonArray into Excel format and then download that file into mobile storage. How can I do this?

Here I am getting the DataSnapshot on button click:

 btnJson.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    long a = dataSnapshot.getChildrenCount();
                    System.out.println("lc" + a);
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {
                        System.out.println("response1" + ds);
                    }
                }
                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                }
            });
        }
    });

Here is the response I am getting on button click in jsonObject:

{ key = 13uhnjvczw, value = {survey_title=Sports, questions={4={type=2, title=Who is the top goal scorer in La Liga?}, 0={options={0=13, 1=5}, type=1, title=How many ucl has real madrid won}, 1={options={0=Real Madrid fc, 1=Liverpool fc}, type=1, title=Who is the current UCL champion?}, 3={type=2, title=Who is the top goal scorer in UCL?}, 2={options={0=Cristiano Ronaldo, 1=Zinedine Zidane}, type=1, title=Who is the all time top scorer of Real Madrid?}}} }


Solution

  • public void saveCsv(JSONArray outerArray) throws IOException, JSONException {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
                }
            }
    
            String fileName = referenceNo + " Result";
            String rootPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/test/";
            File dir = new File(rootPath);
            if (!dir.exists()) {
                dir.mkdir();
            }
            File file = null;
            file = new File(rootPath, fileName);
            if (!file.exists()) {
                progressDialog.dismiss();
                file.createNewFile();
            }
            if (file.exists()) {
                progressDialog.dismiss();
                CSVWriter writer = new CSVWriter(new FileWriter(file), ',');
                for (int i = 0; i < outerArray.length(); i++) {
                    JSONArray innerJsonArray = (JSONArray) outerArray.getJSONArray(i);
    
    
                        arrayOfArrays[k] = stringArray1;
                        writer.writeNext(arrayOfArrays[k]);
                        System.out.println("aa " + Arrays.toString(arrayOfArrays[k]));
    
                    }
                }
    
                writer.close();
                Toast.makeText(this, fileName + " is been saved at " + rootPath, Toast.LENGTH_LONG).show();
            }
        }
    }