"包应包含内容类型部分[M1.13]"

Tep*_*ite 7 java apache excel swing apache-poi

我试图写入Excel文件,但我一直收到错误:

线程"main"中的异常org.apache.poi.POIXMLException:org.apache.poi.openxml4j.exceptions.InvalidFormatException:包应包含内容类型部分[M1.13]

根据我的理解,我错过了一个jar文件.

任何人都可以帮我识别它是哪个文件?

PS我正在使用Netbeans.

我目前的档案

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.JOptionPane;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
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;

/**
 *
 * @author nicholaskissaun
 */

public class Tester {

    public static void main (String args \[\])throws FileNotFoundException, IOException, InvalidFormatException{     
        int RowCount = 7, iChoice;
        String sChoice;
        XSSFSheet s;
        XSSFRow row1;
        XSSFWorkbook wb;
        XSSFCell r1c1, r1c2, r1c8, r1Episodes;

        FileInputStream fis = new FileInputStream("/Users/nicholaskissaun/Google Drive/Grade 11_12/Computer Science/Java/Term1/src/IA/Profiles/Becky/ShowDetails.xlsx");           
        wb = new XSSFWorkbook(fis);  
        s = wb.getSheetAt(0);

    }      

}
Run Code Online (Sandbox Code Playgroud)

Hit*_*ahu 10

使用文件扩展名来处理WorkSheetType

  String inputFilename = new File(path).getName();

                    switch (inputFilename.substring(inputFilename.lastIndexOf(".") + 1,
                            inputFilename.length())) {
                        case "xls":
                            return readXLS(path);

                        case "xlsx":
                            return readXLSX(path);
                        default:
                            Log.e(TAG, "No XLS file chosen");
                            return "Please select valid \"Excel\" File\"";
                    }
Run Code Online (Sandbox Code Playgroud)

对于XLSX文件:使用 XSSFWorkbook & XSSFSheet

    XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(new File(path)));

    XSSFSheet sheet = workbook.getSheetAt(0);
Run Code Online (Sandbox Code Playgroud)

对于XLS文件:使用 HSSFWorkbook & HSSFSheet

    HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(new File(path)));

    HSSFSheet sheet = workbook.getSheetAt(0);
Run Code Online (Sandbox Code Playgroud)


小智 5

当您通过LibreOffice创建XLS/XLSX文件时,可能会发生这种情况.显然,转换中丢失了某些内容,该文件与Microsoft Office中生成的电子表格不同.我有同样的错误,我的解决方案是将我在LibreOffice Calc中完成的所有工作复制到MS Excel电子表格,然后保存一个新文件.


小智 0

检查 EXCEL 格式 .... 首先,我使用 poi 创建了一个示例 excel,我第一次尝试更改了列,它给出了相同的错误,但经过几次尝试后,它成功读取。我想知道为什么它第一次运行不起作用:( 但如果您有正确的库,请检查正确的 Excel 格式