使用java将电子表格保存到磁盘

时间:2017-02-22 09:37:34

标签: java

我需要将上传的电子表格存储到磁盘。我正在使用以下代码执行相同操作,并且从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();
        }
    }

我尝试使用83KB大小的文件,结果文件是82.5KB。 任何帮助,将不胜感激。 感谢。

1 个答案:

答案 0 :(得分:1)

尝试使用Apace POI,使用OPCPackage将.xls或.xlsx文件转换为字节数组,并使用以下代码使用XSSFWorkbook。

    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在转换为字节数组时会注意提取excel文件的所有信息。