officedocument.spreadsheetml.sheet”的excel工作簿

d5vmydt9  于 2021-06-27  发布在  Java
关注(0)|答案(0)|浏览(333)

当我用apachepoi3.17java库创建一个简单的excel工作簿文件时,它会生成一个内容类型为application/octetstream的文件
(通过运行命令检查)

file --mime-type -b test.xlsx

在mac上)。
创建xlsx文件的代码:

package apachepoitest;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Main {

    public static void main(String[] args) throws FileNotFoundException, IOException {
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("sheet1");

        Row row = sheet.createRow(1);
        Cell cell = row.createCell(1);
        cell.setCellValue("test");

        try (FileOutputStream outputStream = new FileOutputStream("test.xlsx")) {
            workbook.write(outputStream);
        }

        workbook.close();
    }

}

但是,当我使用excel创建内容方面完全相同的xslx文件时,内容类型是application/vnd.openxmlformats-officedocument.spreadsheetml.sheet。
是否可以强制apache poi使用内容类型application/vnd.openxmlformats-officedocument.spreadsheetml.sheet保存xlsx文件,如果可以,如何保存?
编辑:我还使用十六进制编辑器验证了文件幻数(它决定了内容类型)。文件的前8个字节标识为application/octet stream(由apachepoi创建)
50 4b 03 04 14 00 08 08号
根据https://www.filesignatures.net/ 这8个字节不是与文件类型匹配的幻数,但前4个字节(即50 4b 03 04)与多个文件类型匹配。
文件的前8个字节标识为application/vnd.openxmlformats-officedocument.spreadsheetml.sheet(由excel创建)
50 4b 03 04 14 00 06 00
,根据filesignatures.net,这是xlsx、pptx和docs的幻数。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题