Обновление файла Excel с помощью Java (Insert Row)

Я пытаюсь обновить файл excel с помощью java.

У нас есть несколько серверов, чье здоровье, то есть дисковое пространство, нужно проверять каждую пятницу, войдя на эти серверы и проверив размер, а также удалите некоторые файлы, которые старше месяца .. и затем заполнить пробел на диске, а затем выйти из системы.

Но теперь я пытаюсь автоматизировать задачу с использованием Java. Я успешно проверил размер диска и удаленные файлы, которые старше месяца, также помещают эти данные в файлы excel.

public class UpdateExcel 
     {
        public static void main(String[]args) throws 
EncryptedDocumentException, InvalidFormatException, IOException
        {
        File f=new File("D:\\TestDeleteFiles");
        String list[]=f.list();
        Calendar lCal = Calendar.getInstance();
        lCal.add(Calendar.DATE, -30); 
        for(int i=0;i<list.length;i++)
            {
                System.out.println(list[i]);
                File tmpFile=new File("D:\\TestDeleteFiles\\"+list[i]);
                Date date=new Date(tmpFile.lastModified());
                if(date.before(lCal.getTime()))
            {
                    tmpFile.delete();
                    System.out.println("Deleted");
            }
           }
        try {
            FileSystemView fsv = FileSystemView.getFileSystemView();
            File[] drives = File.listRoots();

             File cDrive = new File("C:\\");
             File dDrive = new File("D:\\");

                    System.out.println("Drives are : " +cDrive);
                    System.out.println("Drives are : " +dDrive);

                    long cTotSpace = cDrive.getTotalSpace();
                    long cFrSpace = cDrive.getFreeSpace();              
                    long cTotalSpace;
                    long cFreeSpace;

                    long dTotSpace = dDrive.getTotalSpace();
                    long dFrSpace = dDrive.getFreeSpace();              
                    long dTotalSpace;
                    long dFreeSpace;

                    cTotalSpace = cTotSpace / (1024*1024*1024);
                    cFreeSpace = cFrSpace / (1024*1024*1024);

                    dTotalSpace = dTotSpace / (1024*1024*1024);
                    dFreeSpace = dFrSpace / (1024*1024*1024);

                    System.out.println("Total Space in Gb : " + cTotalSpace + " GB");
                    System.out.println("Free Space in Gb : " + cFreeSpace + " GB");

                    System.out.println("Total Space in Gb : " + dTotalSpace + " GB");
                    System.out.println("Free Space in Gb : " + dFreeSpace + " GB");

            String excelFilePath = "D:\\CreateXls\\ServerTestDemo.xls";
            FileInputStream inputStream = new FileInputStream(new File(excelFilePath));
            Workbook workbook = WorkbookFactory.create(inputStream);
            Sheet sheet = workbook.getSheetAt(0);

            Iterator<Row> iterator = sheet.iterator();
            while(iterator.hasNext())
            {   
                Row currentRow = iterator.next();

                Cell cell = currentRow.createCell(currentRow.getLastCellNum(), CellType.STRING);
                Cell dcell = currentRow.createCell(currentRow.getLastCellNum(), CellType.STRING);
                Cell cell1 = currentRow.createCell(currentRow.getLastCellNum(), CellType.STRING);
                System.out.println("Hello" + currentRow.getRowNum());
                if(currentRow.getRowNum() == 0)
                    System.out.println("Hello" + currentRow.getRowNum());
                    cell.setCellValue(cFreeSpace);
                    dcell.setCellValue(dFreeSpace);
                    cell1.setCellValue("");                     
            }
            inputStream.close();     
            FileOutputStream outputStream = new 
FileOutputStream("D:\\CreateXls\\ServerTestDemo.xls");
            workbook.write(outputStream);
            workbook.close();
            outputStream.close();
        } catch (IOException | EncryptedDocumentException
                | InvalidFormatException ex) {
            ex.printStackTrace();
        }
}   
}

Этот код хорошо работает, чтобы поместить размер диска в файл Excel. Этот снимок скажет вам

Но теперь что я хочу сделать заключается в том, чтобы помещать ярлыки наподобие имени сервера в 1-й строке выше IP-адреса, а также Даты в зависимости от того, когда этот код будет выполнен, а C-D-диски над этим свободным пространством.

Ну, я попробовал, но причина имени сервера Iterator также печаталась многократно, чего я не хочу.

ПРИМЕЧАНИЕ. Для информации я не зацикливаюсь на том, как получить дату и все. Я просто зациклен на том, как помещать ярлыки в первую, вторую и третью строки без дублирования. Это demo, поэтому я принял тот же IP-адрес

1
задан 13 August 2018 в 15:20

2 ответа

Я не понимаю, о чем вы спрашиваете, возможно, если бы вы показали, что хотите, чтобы лист Excel выглядел так, как будто кто-то мог вам помочь.

Основываясь на вашем описании, я предполагаю, что вы хотите строка 1, чтобы иметь заголовки, также кажется, что вы используете POI Apache. Если это так, вы можете прочитать это сообщение: Как добавить столбец заголовков в excel с помощью Java Apache POI?

0
ответ дан 15 August 2018 в 17:04

Нет необходимости перебирать строки для обновления значений в строке. Вы можете просто получить строку, используя значения индекса и обновления ячейки.

Row row = sheet.getRow(0);

В случае, если строка равна null, просто создайте строку и обновите значения ячейки.

if(row == null)
{
    row = sheet.createRow(0);
}
0
ответ дан 15 August 2018 в 17:04

Другие вопросы по тегам:

Похожие вопросы: