当我用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的幻数。
暂无答案!
目前还没有任何答案,快来回答吧!