Dojo_user
Dojo_user

Reputation: 281

Issues while writing to Excelsheet using java apache POI

I have two queries as below :-

1) Below is my code to find the total disk space, free and used disk space in my local machine. I want to export these values in a newly created excel sheet under three columns Total Disk Space, Free DiskSpace and UsedDiskSpace.

But in my below code I am able to a create excel sheet under C:\ location but I am not able to set the values of my excel sheet columns to the ones calculated and stored under Total diskspace, FreeDiskSpace and UsedDiskSpace variables. Can anyone suggest me how can I modify my below code to set the excel sheet column values to capacity,Free space and used space variable values etc.

2) How can I convert this code into a .bat executable file so that it can be executed on double click and there is no need to execute the entire code through IDE. Some examples will help!!

import  org.apache.poi.hssf.usermodel.HSSFSheet;
import  org.apache.poi.hssf.usermodel.HSSFWorkbook;
import  org.apache.poi.hssf.usermodel.HSSFRow;
import  org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.IOException;   
import org.apache.commons.io.FileSystemUtils; 
import java.io.*;
import java.io.File;
import java.io.IOException;   
import org.apache.commons.io.FileSystemUtils;    
import java.io.File;
import java.util.ArrayList;

public class DiskSpace 
{
    public static void main(String[] args) 
    {  try{ String filename="C:/NewExcelFile.xls" ;
    HSSFWorkbook workbook=new HSSFWorkbook();
    HSSFSheet sheet =  workbook.createSheet("FirstSheet");  
        ArrayList alldisk=null;
        alldisk=new ArrayList();
        alldisk.add("C:");


        File drive=null;
        long capacity=0,freespace=0, usedspace=0; 
        for(int i=0;i<alldisk.size();i++)
        {
           drive = new File(alldisk.get(i).toString());
           capacity = drive.getTotalSpace(); 
           freespace = drive.getFreeSpace(); 
           usedspace = capacity - freespace;
           HSSFRow rowhead= sheet.createRow((short)0);
            rowhead.getCell(1).setCellValue(capacity);
            rowhead.createCell((short) 0).setCellValue(capacity);
            rowhead.createCell((short) 1).setCellValue(freespace);
            rowhead.createCell((short) 2).setCellValue(usedspace);
            FileOutputStream fileOut =  new FileOutputStream(filename);
            workbook.write(fileOut);
            fileOut.close();
        }} catch ( Exception ex ) {
            System.out.println(ex);

        }
           }}

Upvotes: 0

Views: 1958

Answers (1)

Charvee Shah
Charvee Shah

Reputation: 720

Remove

rowhead.getCell(1).setCellValue(capacity);

line.It gives NullPointerException error and don't use createCell(short) it is deprecated method so please remove short type cast.

Here is my code

import  org.apache.poi.hssf.usermodel.HSSFSheet;
import  org.apache.poi.hssf.usermodel.HSSFWorkbook;
import  org.apache.poi.hssf.usermodel.HSSFRow;
import  org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.IOException;   
import org.apache.commons.io.FileSystemUtils; 
import java.io.*;
import java.io.File;
import java.io.IOException;   
import org.apache.commons.io.FileSystemUtils;    
import java.io.File;
import java.util.ArrayList;

public class DiskSpace 
{
    public static void main(String[] args) 
    {  try{ String filename="/home/likewise-open/EZDI-DOMAIN/cshah/Desktop/NewExamle.xls" ;
    HSSFWorkbook workbook=new HSSFWorkbook();
    HSSFSheet sheet =  workbook.createSheet("FirstSheet");  
        ArrayList alldisk=null;
        alldisk=new ArrayList();
        alldisk.add("/home/likewise-open/EZDI-DOMAIN/cshah/Desktop");


        File drive=null;
        long capacity=0,freespace=0, usedspace=0; 
        for(int i=0;i<alldisk.size();i++)
        {
           drive = new File(alldisk.get(i).toString());
           capacity = drive.getTotalSpace(); 
           freespace = drive.getFreeSpace(); 
           usedspace = capacity - freespace;
           HSSFRow rowhead= sheet.createRow((short)i);
            //rowhead.getCell(1).setCellValue(capacity);
            rowhead.createCell(0).setCellValue(capacity);
            rowhead.createCell(1).setCellValue(freespace);
            rowhead.createCell(2).setCellValue(usedspace);

        }
        FileOutputStream fileOut =  new FileOutputStream(filename);
        workbook.write(fileOut);
        fileOut.close();} catch ( Exception ex ) {
            ex.printStackTrace();

        }
           }}

Upvotes: 1

Related Questions