protected Boolean doInBackground(final String... args) {
String path = "/mnt/sda/sda2/";
//File exportDir = new File(Environment.getExternalStorageDirectory(), "");
File exportDir = new File(path, "");
if (!exportDir.exists()) { exportDir.mkdirs(); }
File file;
//file = new File("mnt/sdcard/myfile.csv");
try {
SimpleDateFormat Timeformat = new SimpleDateFormat("yyyy-MM-dd");
DatePicker datePicker = (DatePicker) findViewById(R.id.DatePicker);
String DateStr = datePicker.getYear() + "-" + (datePicker.getMonth()+1) + "-" + datePicker.getDayOfMonth();
Date Local_Time = Timeformat.parse(DateStr);
DateStr = new SimpleDateFormat("yyyy-MM-dd").format(Local_Time);
file = new File(exportDir, "Ticket_"+DateStr +".csv");
System.out.println("ExportExcel DateStr="+DateStr);
file.createNewFile();
System.out.println("2");
CSVWriter csvWrite = new CSVWriter(new FileWriter(file));
DataBaseHelper myDbHelper = new DataBaseHelper(UltilityActivity.this.getApplicationContext());
myDbHelper = new DataBaseHelper(UltilityActivity.this);
try {
myDbHelper.createDataBase();
} catch (IOException ioe) {
throw new Error("Unable to create database");
}
try {
myDbHelper.openDataBase();
}catch(SQLException sqle){
throw sqle;
}
SQLiteDatabase myExcelDatabase = myDbHelper.getReadableDatabase();
String Query =
"select tbl_vehicle.Plat_No,Driver_Code,Route_Code,Ticket_Date,tbl_inout.Trip_No,tbl_ticket.In_Out,tbl_ticket.Ticket_No,ref_pricetype.PriceTypeName,tbl_ticket.Amount,loc1.Location_Name as From_Name,loc2.Location_Name as To_Name,Login_Time,Logout_Time "
+"from tbl_ticket LEFT JOIN tbl_routeid ON tbl_routeid._id = tbl_ticket.Route_ID "
+"LEFT JOIN tbl_driver ON tbl_driver._id = tbl_ticket.Driver_ID "
+"LEFT JOIN tbl_vehicle ON tbl_vehicle._id = tbl_ticket.Vehicle_ID "
+"LEFT JOIN ref_pricetype ON ref_pricetype._id = tbl_ticket.PriceType_ID "
+"LEFT JOIN tbl_location loc1 ON loc1.Location_ID = tbl_ticket.From_LocationID "
+"LEFT JOIN tbl_location loc2 ON loc2.Location_ID = tbl_ticket.To_LocationID "
+"LEFT JOIN tbl_inout ON tbl_inout._id = tbl_ticket.Trip_ID "
+"LEFT JOIN tbl_driverlogin ON tbl_driverlogin._id = tbl_inout.Login_ID "
+"WHERE date(tbl_ticket.Ticket_Date) = date('2014-03-20') "
+"ORDER BY tbl_ticket.Ticket_Date ";
System.out.println("3");
Cursor curCSV = myExcelDatabase.rawQuery(Query,null);
System.out.println("ExportExcel Cursor Count="+curCSV.getCount());
csvWrite.writeNext(curCSV.getColumnNames());
double TotalAmount = 0;
while(curCSV.moveToNext()) {
TotalAmount = TotalAmount + curCSV.getDouble(curCSV.getColumnIndex("Amount"));
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(3),curCSV.getString(4)};
csvWrite.writeNext(arrStr);
}
String arrStr[] ={
"","","","","","","","","","","","",""
};
arrStr[0] = "Transaction Total ="+curCSV.getCount();
arrStr[curCSV.getColumnIndex("Amount")] = "Total = RM "+String.format("%.2f",(TotalAmount));
csvWrite.writeNext(arrStr);
csvWrite.close();
curCSV.close();
return true;
} catch(Exception sqlEx) {
Log.d("Export Excel ", sqlEx.getMessage(), sqlEx);
return false;
}
}
}
这是我导出数据库的代码变成excel格式。但遗憾的是列大小太小
我想自动设置列大小与列的最大文本大小,平均值可以显示列中的每个单词,不会隐藏数据。
如何使用OpenCSV设置列大小?自动设置最大文本字段大小或手动设置也可以
答案 0 :(得分:1)
无法设置列大小,因为 csv fileformat没有格式化问题的概念,如cellcolor或collumn-width。
可能您可以尝试创建一个excel友好的html文件而不是csv。