Vasantha
Vasantha

Reputation: 11

Saving a spreadsheet to disk using java

I have a requirement to store the uploaded spreadsheet to the disk. I am using the below code to do the same and receiving the file is corrupted error from the excel.

    byte[] bytes = null;
    File uploadedFile = new File("D://xlsxTest//BNG Issue.xlsx"); 
    File file = new File("D://xlsxTest//sample1.xlsx");

    FileOutputStream outStream = null;

    InputStream inputStream = null;

    try{
    if(!file.exists()){
       file.createNewFile();
   }
   outStream = new FileOutputStream(file);

    if (uploadedFile != null) {

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        inputStream = new FileInputStream(uploadedFile);;

        int c = 0;
        while (c != -1) {
            c = inputStream.read();
            byteArrayOutputStream.write((char) c);

        }
        bytes = byteArrayOutputStream.toByteArray();

    }

    outStream.write(bytes);
           }catch(Exception e){
        e.printStackTrace();
    }finally{
        try{
        outStream.close();

        }catch(Exception e){
            e.printStackTrace();
        }
    }

I tried using a file of 83KB size and the resultant file is 82.5KB. Any help would be appreciated. Thanks.

Upvotes: 1

Views: 903

Answers (1)

Srikanth Balaji
Srikanth Balaji

Reputation: 2718

Try using Apace POI, Convert .xls or .xlsx file to byte array using OPCPackage and XSSFWorkbook with below code.

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    OPCPackage pkg = OPCPackage.open(new File(fullFileName));
    XSSFWorkbook wb = new XSSFWorkbook(pkg);
    wb.write(baos);
    byte[] fileContent = baos.toByteArray();

Apache POI takes care to extract all information of the excel file while converting to byte array.

Upvotes: 1

Related Questions