Opencsv如何使用自动文本大小设置列大小

时间:2014-03-22 14:06:33

标签: android excel

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格式。但遗憾的是列大小太小 enter image description here

我想自动设置列大小与列的最大文本大小,平均值可以显示列中的每个单词,不会隐藏数据。

如何使用OpenCSV设置列大小?自动设置最大文本字段大小或手动设置也可以

1 个答案:

答案 0 :(得分:1)

无法设置列大小,因为 csv fileformat没有格式化问题的概念,如cellcolor或collumn-width。

可能您可以尝试创建一个excel友好的html文件而不是csv。