Я пытаюсь обновить файл 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-адрес
Я не понимаю, о чем вы спрашиваете, возможно, если бы вы показали, что хотите, чтобы лист Excel выглядел так, как будто кто-то мог вам помочь.
Основываясь на вашем описании, я предполагаю, что вы хотите строка 1, чтобы иметь заголовки, также кажется, что вы используете POI Apache. Если это так, вы можете прочитать это сообщение: Как добавить столбец заголовков в excel с помощью Java Apache POI?
Нет необходимости перебирать строки для обновления значений в строке. Вы можете просто получить строку, используя значения индекса и обновления ячейки.
Row row = sheet.getRow(0);
В случае, если строка равна null, просто создайте строку и обновите значения ячейки.
if(row == null)
{
row = sheet.createRow(0);
}