我在準備一個應用程序。在我的應用程序中包含數據庫(SQlite)。我的數據庫 我的數據庫包含14列表和data.I想要導出數據到xls文件,當點擊一個按鈕。這是可能的。請引導我並提供一些教程。在android中點擊按鈕時數據庫導出爲xls文件?
1
A
回答
1
0
這種方式,你可以在你的XML設置shell明智數據文件..
File dbFile=getDatabasePath("yourdatabase.sqlite");
File exportDir = new File(Environment.getExternalStorageDirectory()+"/XLS", "");
if (!exportDir.exists())
{
Log.d("export", ""+exportDir);
exportDir.mkdirs();
}
File file = new File(exportDir, "Your file.xls");
db=dba.openDataBase();
file.createNewFile();
CSVWriter csvWrite8 = new CSVWriter(new FileWriter(file8));
Cursor curCSV8=db.rawQuery("Select * from tablename",null);
if(curCSV.moveToFirst())
{
curCSV.moveToFirst();
Log.d("log is","No of Column is ---->>>"+curCSV.getColumnNames().length);
do
{
String arrStr[] ={curCSV.getString(0),curCSV.getString(1),curCSV.getString(2),curCSV.getString(3),curCSV.getString(4),curCSV.getString(5),curCSV.getString(6),curCSV.getString(7),curCSV.getString(8),curCSV.getString(9),curCSV.getString(10),curCSV.getString(11),curCSV.getString(12),curCSV.getString(13),curCSV.getString(14),curCSV.getString(15),curCSV.getString(16),curCSV.getString(17),curCSV.getString(18),curCSV.getString(19),curCSV.getString(20),curCSV.getString(21),curCSV.getString(22),curCSV.getString(23),curCSV.getString(25),curCSV.getString(26),curCSV.getString(27),curCSV.getString(28),curCSV.getString(29)};
csvWrite.writeNext(arrStr);
}while(curCSV.moveToNext());
}
csvWrite.close();
+0
@Chiru看到這個答案...希望這有助於 –
+0
它工作正常。文件打開只在open office中正確。但在微軟excel打開,但在粗略的格式。 –
+0
你必須調整單元的寬度... –
-1
我的解決方案是將SQLite數據庫轉換爲在第一步CSV然後在第二個步驟是CSV文件爲XLS轉換,它爲我工作得很好,你將需要2個庫(opencsv- 1.7.jar; poi-3.8-20120326.jar)
public class ExportDatabaseCSVTask extends AsyncTask<String, Void, Boolean>
{
private final ProgressDialog dialog = new ProgressDialog(DatabaseExampleActivity.this);
@Override
protected void onPreExecute()
{
this.dialog.setMessage("Exporting database...");
this.dialog.show();
}
protected Boolean doInBackground(final String... args)
{
File dbFile=getDatabasePath("database_name");
//AABDatabaseManager dbhelper = new AABDatabaseManager(getApplicationContext());
AABDatabaseManager dbhelper = new AABDatabaseManager(DatabaseExampleActivity.this) ;
System.out.println(dbFile); // displays the data base path in your logcat
File exportDir = new File(Environment.getExternalStorageDirectory(), "");
if (!exportDir.exists())
{
exportDir.mkdirs();
}
File file = new File(exportDir, "excerDB.csv");
try
{
if (file.createNewFile()){
System.out.println("File is created!");
System.out.println("myfile.csv "+file.getAbsolutePath());
}else{
System.out.println("File already exists.");
}
CSVWriter csvWrite = new CSVWriter(new FileWriter(file));
//SQLiteDatabase db = dbhelper.getWritableDatabase();
Cursor curCSV=db.getdb().rawQuery("select * from " + db.TABLE_NAME,null);
csvWrite.writeNext(curCSV.getColumnNames());
while(curCSV.moveToNext())
{
String arrStr[] ={curCSV.getString(0),curCSV.getString(1),curCSV.getString(2)};
/*curCSV.getString(3),curCSV.getString(4)};*/
csvWrite.writeNext(arrStr);
}
csvWrite.close();
curCSV.close();
/*String data="";
data=readSavedData();
data= data.replace(",", ";");
writeData(data);*/
return true;
}
catch(SQLException sqlEx)
{
Log.e("MainActivity", sqlEx.getMessage(), sqlEx);
return false;
}
catch (IOException e)
{
Log.e("MainActivity", e.getMessage(), e);
return false;
}
}
protected void onPostExecute(final Boolean success)
{
if (this.dialog.isShowing())
{
this.dialog.dismiss();
}
if (success)
{
Toast.makeText(DatabaseExampleActivity.this, "Export succeed", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(DatabaseExampleActivity.this, "Export failed", Toast.LENGTH_SHORT).show();
}
}
}
導出CSV爲XLS部分
public class CSVToExcelConverter extends AsyncTask<String, Void, Boolean> {
private final ProgressDialog dialog = new ProgressDialog(DatabaseExampleActivity.this);
@Override
protected void onPreExecute()
{
this.dialog.setMessage("Exporting to excel...");
this.dialog.show();
}
@Override
protected Boolean doInBackground(String... params) {
ArrayList arList=null;
ArrayList al=null;
//File dbFile= new File(getDatabasePath("database_name").toString());
File dbFile=getDatabasePath("database_name");
String yes= dbFile.getAbsolutePath();
String inFilePath = Environment.getExternalStorageDirectory().toString()+"/excerDB.csv";
outFilePath = Environment.getExternalStorageDirectory().toString()+"/test.xls";
String thisLine;
int count=0;
try {
FileInputStream fis = new FileInputStream(inFilePath);
DataInputStream myInput = new DataInputStream(fis);
int i=0;
arList = new ArrayList();
while ((thisLine = myInput.readLine()) != null)
{
al = new ArrayList();
String strar[] = thisLine.split(",");
for(int j=0;j<strar.length;j++)
{
al.add(strar[j]);
}
arList.add(al);
System.out.println();
i++;
}} catch (Exception e) {
System.out.println("shit");
}
try
{
HSSFWorkbook hwb = new HSSFWorkbook();
HSSFSheet sheet = hwb.createSheet("new sheet");
for(int k=0;k<arList.size();k++)
{
ArrayList ardata = (ArrayList)arList.get(k);
HSSFRow row = sheet.createRow((short) 0+k);
for(int p=0;p<ardata.size();p++)
{
HSSFCell cell = row.createCell((short) p);
String data = ardata.get(p).toString();
if(data.startsWith("=")){
cell.setCellType(Cell.CELL_TYPE_STRING);
data=data.replaceAll("\"", "");
data=data.replaceAll("=", "");
cell.setCellValue(data);
}else if(data.startsWith("\"")){
data=data.replaceAll("\"", "");
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue(data);
}else{
data=data.replaceAll("\"", "");
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
cell.setCellValue(data);
}
//*/
// cell.setCellValue(ardata.get(p).toString());
}
System.out.println();
}
FileOutputStream fileOut = new FileOutputStream(outFilePath);
hwb.write(fileOut);
fileOut.close();
System.out.println("Your excel file has been generated");
} catch (Exception ex) {
ex.printStackTrace();
} //main method ends
return true;
}
protected void onPostExecute(final Boolean success)
{
if (this.dialog.isShowing())
{
this.dialog.dismiss();
}
if (success)
{
Toast.makeText(DatabaseExampleActivity.this, "file is built!", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(DatabaseExampleActivity.this, "file fail to build", Toast.LENGTH_SHORT).show();
}
}
}
相關問題
- 1. 如何在點擊按鈕時導出日誌文件?
- 2. 導出爲.xls文件在大數據時不起作用
- 3. 長按事件在按鈕上點擊Android在Android中點擊
- 4. 在點擊一個按鈕時在數據庫中插入值
- 5. 導出數據庫文件爲文本或xml在android中
- 6. 點擊按鈕更新數據從數據庫上點擊按鈕
- 7. Android按鈕點擊按鈕時關閉
- 8. android - 定時按鈕點擊
- 9. 出口MongoDB的數據導入Excel中使用按鈕,點擊
- 10. 按鈕在android tabgroup中點擊事件
- 11. Ajax - 點擊按鈕更新數據庫
- 12. 如何在按鈕點擊數據庫中添加數據?
- 13. 插入值到Android中的數據庫與按鈕點擊
- 14. 當點擊結帳按鈕時將數據插入數據庫
- 15. 搜索按鈕在Android中單擊時檢索數據庫中的數據
- 16. 如何在android中點擊按鈕時出現視圖
- 17. Android按鈕點擊
- 18. 點擊按鈕時加載數據
- 19. 傳遞數據時,按鈕點擊
- 20. 單擊按鈕時插入數據庫
- 21. 如何用Python下載文件(Jinja2)點擊導出按鈕?
- 22. Android-點擊按鈕時創建運行時編輯文件
- 23. 如何導出sqlite數據庫爲android中的csv文件?
- 24. 導出爲.xls
- 25. 將.net數據集導出爲XLS文件
- 26. Android - 在文本文件中導出數據庫
- 27. 如何在點擊引導彈出按鈕時讀取響應?
- 28. 如何在下載文件時點擊保存爲按鈕?
- 29. 將數據庫導出爲CSV文件
- 30. 如何在Android中點擊按鈕時撰寫電子郵件?
可以使用opencsv庫來轉換您的SQLite數據庫爲.csv或.xls文件...該庫和一些例子搜索谷歌.. –
感謝ü這麼多我有使用opencsv它工作正常 –