2013-10-28 42 views
0

糾正我錯在哪裏。Java列表到Excel列

我已經寫了一個Java程序,它將從兩個不同的目錄中獲得文件列表,並使用文件名創建兩個(Java列表)。我想將這兩個列表(下載的文件列表和上傳的文件列表)轉移到excel。

我得到的結果是這些列表被傳輸行明智。我想列在明智的他們。

下面給出的是代碼:

public class F { 

static List<String> downloadList = new ArrayList<>(); 
static List<String> dispatchList = new ArrayList<>(); 

public static class FileVisitor extends SimpleFileVisitor<Path> { 

    @Override 
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { 
     String name = file.toRealPath().getFileName().toString(); 
     if (name.endsWith(".pdf") || name.endsWith(".zip")) { 
      downloadList.add(name); 
     } 
     if (name.endsWith(".xml")) { 
      dispatchList.add(name); 
     } 
     return FileVisitResult.CONTINUE; 
    } 
} 

public static void main(String[] args) throws IOException { 
    try { 
     Path downloadPath = Paths.get("E:\\report\\02_Download\\10252013"); 
     Path dispatchPath = Paths.get("E:\\report\\01_Dispatch\\10252013"); 

     FileVisitor visitor = new FileVisitor(); 
     Files.walkFileTree(downloadPath, visitor); 
     Files.walkFileTree(downloadPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), 1, visitor); 

     Files.walkFileTree(dispatchPath, visitor); 
     Files.walkFileTree(dispatchPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), 1, visitor); 
     System.out.println("Download File List" + downloadList); 
     System.out.println("Dispatch File List" + dispatchList); 
     F f = new F(); 
     f.UpDown(downloadList, dispatchList); 
    } catch (Exception ex) { 
     Logger.getLogger(F.class.getName()).log(Level.SEVERE, null, ex); 
    } 

} 
int rownum = 0; 
int colnum = 0; 
HSSFSheet firstSheet; 
Collection<File> files; 
HSSFWorkbook workbook; 
File exactFile; 

{ 
    workbook = new HSSFWorkbook(); 
    firstSheet = workbook.createSheet("10252013"); 
    Row headerRow = firstSheet.createRow(rownum); 
    headerRow.setHeightInPoints(40); 
} 

public void UpDown(List<String> download, List<String> upload) throws Exception { 

    List<String> headerRow = new ArrayList<>(); 
    headerRow.add("Downloaded"); 
    headerRow.add("Uploaded"); 
    List<List> recordToAdd = new ArrayList<>(); 

    recordToAdd.add(headerRow); 
    recordToAdd.add(download); 
    recordToAdd.add(upload); 
    F f = new F(); 
    f.CreateExcelFile(recordToAdd); 
    f.createExcelFile(); 
} 

void createExcelFile() { 
    FileOutputStream fos = null; 
    try { 
     fos = new FileOutputStream(new File("E:\\report\\Download&Upload.xls")); 
     HSSFCellStyle hsfstyle = workbook.createCellStyle(); 
     hsfstyle.setBorderBottom((short) 1); 
     hsfstyle.setFillBackgroundColor((short) 245); 
     workbook.write(fos); 
    } catch (Exception e) { 
    } 
} 

public void CreateExcelFile(List<List> l1) throws Exception { 
    try { 
     for (int j = 0; j < l1.size(); j++) { 
      Row row = firstSheet.createRow(rownum); 
      List<String> l2 = l1.get(j); 
      for (int k = 0; k < l2.size(); k++) { 
       Cell cell = row.createCell(k); 
       cell.setCellValue(l2.get(k)); 
      } 
      rownum++; 
     } 
    } catch (Exception e) { 
    } finally { 
    } 
} 
    } 

(目的是驗證下載和上傳在指定日期的文件) 感謝。

+0

爲什麼要求在stackoverflow上解決這個問題比你能解決得更快?如果你已經有一種方式工作......閃爍並檢查excel語法。 – clwhisk

回答

0

如果您想訪問/在而不是建設工作,你需要改變工作表的訪問代碼。

從現有的代碼剪斷了,這裏的關鍵功能:

Row row = firstSheet.createRow(rowNum); 
Cell cell = row.createCell(colNum); 
cell.setCellValue(value); 

您需要重新排列這些循環輸出數據在逐列時尚。

0

感謝您的建議..我修改了我的程序並上傳瞭解決方案。

public class F { 
static List<String> downloadList = new ArrayList<>(); 
static List<String> dispatchList = new ArrayList<>(); 

public static class FileVisitor extends SimpleFileVisitor<Path> { 

    @Override 
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { 
     String name = file.toRealPath().getFileName().toString(); 
     if (name.endsWith(".pdf") || name.endsWith(".zip")) { 
       downloadList.add(name); 
     } 
     if (name.endsWith(".xml")) { 
      dispatchList.add(name); 
     } 
     return FileVisitResult.CONTINUE; 
    } 
} 

public static void main(String[] args) throws IOException { 
    try { 
     Path downloadPath = Paths.get("E:\\Download\\10292013"); 
     Path dispatchPath = Paths.get("E:\\Dispatch\\10292013"); 

     FileVisitor visitor = new FileVisitor(); 
     Files.walkFileTree(downloadPath, visitor); 
     Files.walkFileTree(downloadPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), 1, visitor); 

     Files.walkFileTree(dispatchPath, visitor); 
     Files.walkFileTree(dispatchPath, EnumSet.of(FileVisitOption.FOLLOW_LINKS), 1, visitor); 

     /* List all files*/ 
     System.out.println("Download File List" + downloadList); 
     System.out.println("Dispatch File List" + dispatchList); 
     F f = new F(); 
     f.UpDown(downloadList, dispatchList); 
    } catch (Exception ex) { 
     Logger.getLogger(F.class.getName()).log(Level.SEVERE, null, ex); 
    } 

} 
int rownum = 0; 
int colnum = 0; 
HSSFSheet firstSheet; 
Collection<File> files; 
HSSFWorkbook workbook; 
File exactFile; 

{ 
    workbook = new HSSFWorkbook(); 
    firstSheet = workbook.createSheet("10292013"); 
    Row headerRow = firstSheet.createRow(rownum); 
    headerRow.setHeightInPoints(40); 
} 

public void UpDown(List<String> download, List<String> upload) throws Exception { 

    List<String> headerRow = new ArrayList<String>(); 
    headerRow.add("Downloaded"); 
    headerRow.add("Uploaded"); 
    List<List<String>> recordToAdd = new ArrayList<List<String>>(); 
    recordToAdd.add(headerRow); 
    recordToAdd.add(download); 
    recordToAdd.add(upload); 
    CreateExcelFile(headerRow, download, upload); 
    createExcelFile(); 
} 

void createExcelFile() { 
    FileOutputStream fos = null; 
    try { 
     fos = new FileOutputStream(new File("E:\\report\\Download&Upload.xls")); 
     HSSFCellStyle hsfstyle = workbook.createCellStyle(); 
     hsfstyle.setBorderBottom((short) 1); 
     hsfstyle.setFillBackgroundColor((short) 245); 
     workbook.write(fos); 
    } catch (Exception e) { 
    } 
} 

public void CreateExcelFile(List<String> headers, List<String> down, List<String> up) throws Exception { 

    try { 
     Row row = firstSheet.createRow((short)(rownum++)); 
     for(int i = 0;i < headers.size();i++) { 
      Cell cell = row.createCell(i); 
      cell.setCellValue(headers.get(i)); 
     } 
     for (int j = 0; j < down.size(); j++) { 
      row = firstSheet.createRow((short)(rownum++)); 
      Cell cell = row.createCell(0); 
      cell.setCellValue(down.get(j)); 
      if(up.size() > j) { 
       cell = row.createCell(1); 
       cell.setCellValue(up.get(j)); 
      } 
     } 

    } catch (Exception e) { 
    } finally { 
    } 
} 
}