I have problem I want to create an excel file from my sqlite database in android. No when I'm backing up my database (menu button), the file will be created but it has no data inside of it (can't add it to google drive as example).
I don't know where I'm mistaken. I watched at different tutorials online but I haven't found any big difference with my code. Can you help me?
public static boolean createBackup(Context context) {
boolean successful = true;
Context ct = context;
int counterSubjects = 0;
int counterGrades = 0;
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheetSubjects = workbook.createSheet(ct.getString(R.string.sheet_subjects));
// ADD Subjects
Cursor cursorSubjects = context.getContentResolver().query(DatabaseContentProvider.CONTENT_URI, null, null, null, null);
if (cursorSubjects.moveToFirst()) {
HSSFRow header = sheetSubjects.createRow(counterSubjects);
header.createCell(0).setCellValue("ID");
header.createCell(1).setCellValue("Name");
header.createCell(2).setCellValue("Average");
header.createCell(3).setCellValue("Scale");
counterSubjects++;
do {
HSSFRow row = sheetSubjects.createRow(counterSubjects);
row.createCell(0).setCellValue(cursorSubjects.getInt(cursorSubjects.getColumnIndex(Database.SUBJECT_ID)));
row.createCell(1).setCellValue(cursorSubjects.getString(cursorSubjects.getColumnIndex(Database.SUBJECT_NAME)));
row.createCell(2).setCellValue(cursorSubjects.getDouble(cursorSubjects.getColumnIndex(Database.SUBJECT_AVERAGE)));
row.createCell(3).setCellValue(cursorSubjects.getString(cursorSubjects.getColumnIndex(Database.SUBJECT_SCALE)));
counterSubjects++;
} while (cursorSubjects.moveToNext());
}
// ADD Grades
if (cursorSubjects.moveToFirst()) {
do {
HSSFSheet sheetGrade = workbook.createSheet(cursorSubjects.getString(cursorSubjects.getColumnIndex(Database.SUBJECT_NAME)));
HSSFRow header = sheetGrade.createRow(counterGrades);
header.createCell(0).setCellValue("ID");
header.createCell(1).setCellValue("Value");
header.createCell(2).setCellValue("Weight");
header.createCell(3).setCellValue("Description");
header.createCell(4).setCellValue("Date");
counterGrades++;
Uri uri = DatabaseContentProvider.CONTENT_URI
.buildUpon()
.appendPath(String.valueOf(cursorSubjects.getInt(cursorSubjects.getColumnIndex(Database.SUBJECT_ID))))
.build();
Cursor cursorGrades = ct.getContentResolver().query(uri, null, null, null, null);
if (cursorGrades.moveToFirst()) {
do {
HSSFRow row = sheetSubjects.createRow(counterGrades);
row.createCell(0).setCellValue(cursorGrades.getInt(cursorGrades.getColumnIndex(Database.GRADE_ID)));
row.createCell(1).setCellValue(cursorGrades.getDouble(cursorGrades.getColumnIndex(Database.GRADE_VALUE)));
row.createCell(2).setCellValue(cursorGrades.getDouble(cursorGrades.getColumnIndex(Database.GRADE_WEIGHT)));
row.createCell(3).setCellValue(cursorGrades.getString(cursorGrades.getColumnIndex(Database.GRADE_DESCRIPTION)));
row.createCell(3).setCellValue(cursorGrades.getString(cursorGrades.getColumnIndex(Database.GRADE_DATE)));
counterGrades++;
} while (cursorGrades.moveToNext());
}
cursorGrades.close();
} while (cursorSubjects.moveToNext());
}
cursorSubjects.close();
File backupFolder = ct.getDir(C.backupFolder, Context.MODE_PRIVATE); //Creating an internal dir;
File backupFile = new File(backupFolder, C.backupFileName); //Getting a file within the dir
try {
FileOutputStream out = new FileOutputStream(backupFile);
try {
workbook.write(out);
out.close(); // Save Backup File with data
} catch (IOException e) {
successful = false;
e.printStackTrace();
}
} catch (FileNotFoundException e) {
successful = false;
e.printStackTrace();
}
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setDataAndType(Uri.fromFile(backupFile), "application/vnd.ms-excel");
ct.startActivity(Intent.createChooser(intent, "Send Excel"));
return successful;
}
I appreciate your helps! And thanks for taking your time to help me too!
Aucun commentaire:
Enregistrer un commentaire