首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将excel文件表导入java时出错

将excel文件表导入java时出错
EN

Stack Overflow用户
提问于 2015-07-08 23:06:56
回答 1查看 2.2K关注 0票数 1

我试图用java中两列的值创建一个双精度数组,但它无法识别我的工作表。

我认为我的路径名可能是问题所在,除了这是从目录中复制和粘贴的。(当然,除了额外的斜杠)。任何指向这个方向的指针都会很有帮助。

下面是我的代码:

异常是由行"XSSFWorkbook工作簿=新的XSSFWorkbook(fis);

代码语言:javascript
复制
package adina.twitter;

import java.io.IOException;
import java.util.Iterator;
import java.io.File;
import java.io.FileInputStream;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
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;

import  java.lang.Iterable;

public class ReadFile {

    public static void main(String[] args) throws IOException {

        final String FILE_PATH = "C:\\Users\\silbeab1\\Documents\\seedsActivity12Junv2.xlsx";
        String fileSheet = "screen_name-user_id";

        String[][] snId = null;

        try{
            FileInputStream fis = new FileInputStream(new File(FILE_PATH));
            XSSFWorkbook workbook = new XSSFWorkbook(fis);
            XSSFSheet worksheet = workbook.getSheet(fileSheet);

            boolean flag = true;
            System.out.println(flag);
            for (int x = 0; flag == true; x++){
                for (int y = 0; y < 2; y++){
                    String test = worksheet.getRow(x).getCell(y).toString();
                    if (test != null){
                        snId[x][y] = test;
                    }
                    else{
                        flag = false;
                    }
                }
            }           
        }
        catch (Exception e){
            System.out.printf("Cannot open %s \n error: %s",FILE_PATH,e);
        }       
    }   
}

下面是我的输出: Cannot open C:\Users\silbeab1\Documents\seedsActivity12Junv2.xlsx error: org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException

下面是完整的堆栈跟踪:

代码语言:javascript
复制
org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
    at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:62)
    at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:456)
    at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:162)
    at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:271)
    at adina.twitter.ReadFile.main(ReadFile.java:29)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:60)
    ... 4 more
Caused by: java.io.CharConversionException: Characters larger than 4 bytes are not supported: byte 0xa6 implies a length of more than 4 bytes
    at org.apache.xmlbeans.impl.piccolo.xml.UTF8XMLDecoder.decode(UTF8XMLDecoder.java:162)
    at org.apache.xmlbeans.impl.piccolo.xml.XMLStreamReader$FastStreamDecoder.read(XMLStreamReader.java:762)
    at org.apache.xmlbeans.impl.piccolo.xml.XMLStreamReader.read(XMLStreamReader.java:162)
    at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yy_refill(PiccoloLexer.java:3477)
    at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yylex(PiccoloLexer.java:3962)
    at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yylex(Piccolo.java:1290)
    at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yyparse(Piccolo.java:1400)
    at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:714)
    at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3479)
    at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1277)
    at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1264)
    at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)
    at org.openxmlformats.schemas.spreadsheetml.x2006.main.SstDocument$Factory.parse(Unknown Source)
    at org.apache.poi.xssf.model.SharedStringsTable.readFrom(SharedStringsTable.java:119)
    at org.apache.poi.xssf.model.SharedStringsTable.<init>(SharedStringsTable.java:106)
    ... 9 more
EN

回答 1

Stack Overflow用户

发布于 2015-07-11 18:51:39

此异常java.io.CharConversionException: Characters larger than 4 bytes are not supported: byte 0xa6 implies a length of more than 4 bytes (在apache-poi情况下)主要发生在您尝试读取.xlsb格式(不支持)时。

您确定您的excel是xlsx格式而不是xlsb格式吗?

请查看以下链接以获取类似的异常,但仅限于xlsb格式:http://comments.gmane.org/gmane.comp.jakarta.poi.user/12151

Exception reading XLSB File Apache POI java.io.CharConversionException

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31296635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档