使用java apache POI写入Excel Sheet时出现问题

时间:2014-05-23 09:54:08

标签: java java-ee apache-poi java-io

我有两个问题如下: -

1)以下是我的代码,用于查找本地计算机中总磁盘空间,空闲和已用磁盘空间。我想在新创建的Excel工作表中将这些值导出为三列总磁盘空间,免费DiskSpace UsedDiskSpace

但是在我的下面的代码中,我能够在C:\ location下创建excel表,但是我无法将excel表列的值设置为计算并存储在Total diskspace,FreeDiskSpace和UsedDiskSpace变量下的值。任何人都可以建议我如何修改我的下面的代码,以将Excel工作表列值设置为容量,可用空间和已用空间变量值等。

2)如何将此代码转换为.bat可执行文件,以便双击即可执行,无需通过IDE执行整个代码。一些例子会有所帮助!!

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);

        }
           }}

1 个答案:

答案 0 :(得分:1)

删除

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

line。它给出了NullPointerException错误,并且不使用createCell(简称)它是不推荐使用的方法,所以请删除短类型转换。

这是我的代码

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();

        }
           }}