Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中使用POI JAR读取xlsx文件时获取异常_Java_Jar_Apache Poi_Xlsx - Fatal编程技术网

在java中使用POI JAR读取xlsx文件时获取异常

在java中使用POI JAR读取xlsx文件时获取异常,java,jar,apache-poi,xlsx,Java,Jar,Apache Poi,Xlsx,我无法使用java读取xlsx文件,在创建对象XSSFWorkbook(fis)的行中出现Exception HashMap keyMap=newhashmap(); HashMap valueMap=null; ArrayList行列表=新建ArrayList(); 试一试{ FileInputStream fis=新的FileInputStream(文件名); 字符串fileExtn=getFileExtension(文件名); 工作手册; HSSF工作手册HSSF工作手册; Sheet=n

我无法使用java读取
xlsx
文件,在创建对象XSSFWorkbook(fis)的行中出现
Exception

HashMap keyMap=newhashmap();
HashMap valueMap=null;
ArrayList行列表=新建ArrayList();
试一试{
FileInputStream fis=新的FileInputStream(文件名);
字符串fileExtn=getFileExtension(文件名);
工作手册;
HSSF工作手册HSSF工作手册;
Sheet=null;
if(fileExtn.equalsIgnoreCase(“xlsx”))
{
调试(“在创建工作簿之前”);
XSSF工作簿=新XSSF工作簿(fis);
调试(“创建了xssfWorkBook对象”);
sheet=xssf工作簿.getSheetAt(0);
}else if(fileExtn.equalsIgnoreCase(“xls”))
{
HSSF工作手册=新的HSSF工作手册(fis);
工作表=(工作表)hssfWorkBook.getSheetAt(0);
}
迭代器行=sheet.rowIterator();
int rowCount=0;
while(rows.hasNext()){
如果(行计数==0){
Row=rows.next();
迭代器单元格=行。单元格迭代器();
短细胞计数器=1;
while(cells.hasNext()){
Cell=cells.next();
字符串cellValue=getCellValueAsString(单元格);
keyMap.put(cellCounter,cellValue);
细胞计数器++;
}
}否则{
valueMap=newhashmap();
Row=rows.next();
迭代器单元格=行。单元格迭代器();
短细胞计数器=1;
while(cells.hasNext()){
Cell=cells.next();
字符串cellValue=getCellValueAsString(单元格);
valueMap.put(keyMap.get(cellCounter),cellValue);
细胞计数器++;
}
行列表。添加(valueMap);
}
行计数++;
}
}catch(filenotfounde异常){
e、 printStackTrace();
日志错误(“FileNotFoundException”+e);
抛出新异常(“读取Excel文件时FileNotFoundException,消息”);
}捕获(IOE异常){
e、 printStackTrace();
日志错误(“IOException”+e);
抛出新异常(“读取Excel文件时出现IOException,消息”);
}捕获(例外e){
e、 printStackTrace();
抛出新异常(“读取Excel文件时异常,消息”);
}
获取以下异常,因为stackTrace是:

位于的java.lang.NullPointerException org.apache.poi.openxml4j.opc.OPCPackage.getPart(OPCPackage.java:562) 在 poimmldocumentpart.java:63 在org.apache.poi.POIXMLDocument.(POIXMLDocument.java:58)上 org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:186) 在 com.covad.portlet.mars.util.ExcelReader.readExcel(ExcelReader.java:72)


是的,上述程序需要几个jar,如poi-3.7.jar、poi-ooxml-3.7-20101029.jar、poi-ooxml-schemas-3.7-20101029.jar、xmlbeans-2.3.0.jar和dom4j-1.6.1.jar

另外,我正在尝试的输入文件有一些问题。我创建了一个新的空白文件,复制了我需要的所有数据,并试图读取相同的数据。成功了


谢谢大家的时间和帮助。

是的,上述程序需要几个jar,如poi-3.7.jar、poi-ooxml-3.7-20101029.jar、poi-ooxml-schemas-3.7-20101029.jar、xmlbeans-2.3.0.jar和dom4j-1.6.1.jar

另外,我正在尝试的输入文件有一些问题。我创建了一个新的空白文件,复制了我需要的所有数据,并试图读取相同的数据。成功了


谢谢大家的时间和帮助。

我以前遇到过这个问题,请确保文件保存为 Excel工作簿(.xlsx),如果将文件另存为 严格的开放XML电子表格(.xlsx),它们都有相同的扩展,但内部结构可能不同,POI似乎不支持它;要解决文件上的问题,请将其重新保存为Excel工作簿(*.xlsx)。
我希望这可以解决您的问题。

我以前遇到过这个问题,请确保文件保存为 Excel工作簿(.xlsx),如果将文件另存为 严格的开放XML电子表格(.xlsx),它们都有相同的扩展,但内部结构可能不同,POI似乎不支持它;要解决文件上的问题,请将其重新保存为Excel工作簿(*.xlsx)。
我希望这能解决你的问题。

如果你去找一位技工,告诉他你的车不能发动,而且是一辆福特车,你认为这对技工来说足够修理你的车吗?嗨,佩特,我查过系统日志,知道这是空点异常。下面是org.apache.poi.poi.poimmldocument.org.apache.poi.poi.poimmldocument.(poimmldocument.java:58)org.apache.poi.poimmldocument.(poimmldocument.java:63)org.apache.poi.poimmldocument.(poimmldocument.java:58)org.apache.poi.xssf.xssf.xssf工作簿中it java.lang.lang.NullPointerException的堆栈跟踪。(XSSFWorkbook.java:186)位于com.covad.portlet.mars.util.ExcelReader.readExcel(ExcelReader.java:72)好的,这比上面的错误有用得多…(已经结束)对我来说,XLSX文件不是一个正确的XLSX文件,POI不能读取它。尝试用另一个XLSX文件确保您有正确的权限来读取该文件。也考虑您使用XLS而不是XLSX的可能性。如果您去机修工,并告诉他您的汽车不能启动,它是。一辆福特汽车,你认为这足以让修理工修理你的汽车吗?嗨,佩特,我查过系统日志,知道它是NullPointerException。下面是它的堆栈跟踪java.lang.NullPointerException,位于org.apache.poi.openxml4j.opc.OPCPackage.getPart(OPCPackage.java:562)在org.apache.poi.POIXMLDocumentPart.(POIXMLDocumentPart.java:63)在org.apache.poi.POIXMLDocument.(POIXMLDocument.java:58)在org.apache.poi.xssf.usermodel.XSSFWorkbook.(XSSFWorkbook.java:186)
HashMap<Short, String> keyMap = new HashMap<Short, String>();
HashMap<String, String> valueMap = null;
ArrayList<HashMap<String, String>> rowList = new ArrayList<HashMap<String, String>>();
try {
    FileInputStream fis = new FileInputStream(fileName);
    String fileExtn = getFileExtension(fileName);

    Workbook xssfWorkBook ;
    HSSFWorkbook hssfWorkBook ;
    Sheet sheet=null;
    if (fileExtn.equalsIgnoreCase("xlsx"))
    {
        log.debug("Before creating WorkBook");
        xssfWorkBook = new XSSFWorkbook(fis);
        log.debug("xssfWorkBook object created");
        sheet = xssfWorkBook.getSheetAt(0);
    }else  if (fileExtn.equalsIgnoreCase("xls"))
    {
        hssfWorkBook = new HSSFWorkbook(fis);
        sheet = (Sheet) hssfWorkBook.getSheetAt(0);
    }
    Iterator<Row> rows = sheet.rowIterator();
    int rowCount = 0;
    while (rows.hasNext()) {
        if (rowCount == 0) {
            Row row = rows.next();
            Iterator<Cell> cells = row.cellIterator();
            short cellCounter = 1;
            while (cells.hasNext()) {
                Cell cell = cells.next();
                String cellValue = getCellValueAsString(cell);
                keyMap.put(cellCounter, cellValue);
                cellCounter++;
            }
        } else {
            valueMap = new HashMap<String, String>();
            Row row = rows.next();
            Iterator<Cell> cells = row.cellIterator();
            short cellCounter = 1;
            while (cells.hasNext()) {
                Cell cell = cells.next();
                String cellValue = getCellValueAsString(cell);
                valueMap.put(keyMap.get(cellCounter), cellValue);
                cellCounter++;
            }
            rowList.add(valueMap);
        }
        rowCount++;
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
    log.error("FileNotFoundException" + e);
    throw new Exception("FileNotFoundException while reading Excel file, Message <" + e.getMessage() + ">");
} catch (IOException e) {
    e.printStackTrace();
    log.error("IOException" +e);
    throw new Exception("IOException while reading Excel file, Message <" + e.getMessage() + ">");
}catch(Exception e){
    e.printStackTrace();
    throw new Exception("Exception while reading Excel file, Message <" + e.getMessage() + ">");
}