Java ApachePOI的大小差异

Java ApachePOI的大小差异,java,apache-poi,Java,Apache Poi,我用Java编写了一个代码来读取excel(.xlsx)文件并用不同的名称保存同一个文件。代码运行良好,但原始excel和生成excel的大小不同。我在保存原始文件时遇到了问题,excel正在丢失一些数据。但当我通过Ms Excel打开生成的文件时,它会恢复到原来的大小。我可以在代码中使用什么来避免数据丢失? 代码是: 此图显示两个文件的大小不同 这并不意味着实际的单元格数据丢失,因为由XSSFWorkbook生成的输出文件可能会删除一些不需要的元信息。是的,我也需要这些元数据。实际数据没有丢失

我用Java编写了一个代码来读取excel(.xlsx)文件并用不同的名称保存同一个文件。代码运行良好,但原始excel和生成excel的大小不同。我在保存原始文件时遇到了问题,excel正在丢失一些数据。但当我通过Ms Excel打开生成的文件时,它会恢复到原来的大小。我可以在代码中使用什么来避免数据丢失? 代码是:

此图显示两个文件的大小不同


这并不意味着实际的单元格数据丢失,因为由
XSSFWorkbook
生成的输出文件可能会删除一些不需要的元信息。是的,我也需要这些元数据。实际数据没有丢失,但元数据丢失了。您能确定丢失了哪些元数据吗?新创建的Excel文件中缺少了什么?正如@ΔλЛ提到的。。我看这里没有什么问题。如果你没有错过任何东西,一切都很好。如果您想复制,请按照@RC建议并使用文件utils复制该文件。您能解释一下“其他操作”吗。因为我们和你们都不知道我们在寻找什么,缺少什么,所以很难帮助。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class MyExcel {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream(new File("D:\\test.xlsx"));

        XSSFWorkbook workbook = new XSSFWorkbook(fis);
        XSSFSheet sheet = workbook.getSheetAt(1);
        XSSFRow row1 = sheet.getRow(1);
        XSSFCell cell1 = row1.getCell(1);
        cell1.setCellValue("Mahesh");
        XSSFRow row2 = sheet.getRow(2);
        XSSFCell cell2 = row2.getCell(1);
        cell2.setCellValue("Ramesh");

        OutputStream fos = new FileOutputStream(new File("D:\\test_new.xlsx"));

        workbook.write(fos);
        fis.close();
        fos.close();

        System.out.println("Done");
    }
}