2016-03-19 3 views
0

У меня есть код, приведенный ниже, и в основном это мои данные из моей таблицы и помещают их в электронную таблицу. Однако при экспорте данных данные не сохраняются в порядке, указанном при сортировке моей таблицы:Сортировка данных перед экспортом в excel

Это определяется ниже из другого метода, который сортирует строки таблицы и выполняет метод saveSingleTableAsExcel(); который экспортирует данные:

....... 
    sorter = new TableRowSorter<>(tableR.getModel()); 
     tableR.setRowSorter(sorter); 
     sortKeys = new ArrayList<>(); 

     int columnIndexToSort = 0; 
     sortKeys.add(new RowSorter.SortKey(columnIndexToSort, SortOrder.ASCENDING)); 

     sorter.setSortKeys(sortKeys); 
     sorter.sort(); 
       saveSingleTableAsExcel(); 

.......

public void saveSingleTableAsExcel() throws FileNotFoundException{ 

     Map<String,TableModel> models = new HashMap<String,TableModel>(); 


     models.put("Sheet1", modelR); 

     saveTablesAsExcel(models); 
    } 



    public static void saveTablesAsExcel(Map<String,TableModel> models) throws FileNotFoundException{ 

     HSSFWorkbook wb = new HSSFWorkbook(); 

     for (String sheetName : models.keySet()){ 
      createSheet(wb, models.get(sheetName), sheetName); 
     } 
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HHmmss"); 
Calendar cal = Calendar.getInstance(); 
System.out.println(dateFormat.format(cal.getTime())); //2014/08/06 16:00:22 
     //FileOutputStream out = null; 

       FileOutputStream out = new FileOutputStream("C:\\Users\\tester.xls"); 

     try { 
      wb.write(out); 
      out.close(); 
     } catch (IOException e) { 
     } 
    } 
     /** 
    * Create a Sheet in the workbook using data from the TableModel 
    * 
    * @param wb 
    * @param model 
    * @param sheetName 
    */ 
     private static void createSheet(HSSFWorkbook wb, TableModel model, String sheetName){ 
     Sheet sheet = wb.createSheet(sheetName);  

     Row headerRow = sheet.createRow(0); 
     headerRow.setHeightInPoints(12.75f); 

     HSSFFont boldFont = wb.createFont(); 
     boldFont.setFontHeightInPoints((short)22); 
     boldFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); 
     HSSFCellStyle headerStyle = wb.createCellStyle(); 

     // Create the header cells 
     int numColumns = model.getColumnCount(); 
     for (int col=0; col<numColumns; col++) {  
      Cell cell = headerRow.createCell(col); 
      cell.setCellValue(model.getColumnName(col)); 
      cell.setCellStyle(headerStyle); 
     } 

     // Set the cell values 
     int numRows = model.getRowCount(); 
     for (int row=0; row<numRows; row++){  
      Row sheetRow = sheet.createRow(row+1); // account for header row (0) 

      for (int col=0; col<numColumns; col++) { 
       Cell cell = sheetRow.createCell(col); 
       Object val = model.getValueAt(row, col); 

       if (val instanceof Number){ 
        cell.setCellValue((double)val); 
       } 
       else if (val instanceof Boolean){ 
        cell.setCellValue((Boolean)val);  
       } 

       else if (val instanceof String){ 
        cell.setCellValue(((String)val)); 
       } 
       else if (val instanceof Date){ 
        cell.setCellValue((Date)val); 
       } 
          // else { 
       // cell.setCellValue(val.toString()); 
           // } 
      } 
     } 
    } 

Как можно сохранить тот же порядок, что и модель, которая в настоящее время сортируются по первому столбцу (столбец 0)?

ответ

0

Является ли ваш метод сортировки использующим метод сравнения или равным, который не был перезаписан? Это мое лучшее предположение, не видя метод сортировки.

+0

Моя сортировка - это просто, что в первой части моего вопроса между ........ и ...... – Ingram

Смежные вопросы