日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java eventusermodel_异常读取XLSB文件Apache POI java.io.CharConversionException

發布時間:2024/3/26 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java eventusermodel_异常读取XLSB文件Apache POI java.io.CharConversionException 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我正在開發一個使用Apache POI讀取excel xlsb文件的

Java應用程序,但是在讀取它時遇到異常,我的代碼如下:

import java.io.IOException;

import java.io.InputStream;

import org.apache.poi.xssf.eventusermodel.XSSFReader;

import org.apache.poi.xssf.model.SharedStringsTable;

import org.apache.poi.xssf.usermodel.XSSFRichTextString;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;

import org.apache.poi.openxml4j.exceptions.OpenXML4JException;

import org.apache.poi.openxml4j.opc.Package;

import org.xml.sax.Attributes;

import org.xml.sax.ContentHandler;

import org.xml.sax.InputSource;

import org.xml.sax.SAXException;

import org.xml.sax.XMLReader;

import org.xml.sax.helpers.DefaultHandler;

import org.xml.sax.helpers.XMLReaderFactory;

import java.util.Iterator;

public class Prueba {

public static void main (String [] args){

String direccion = "C:/Documents and Settings/RSalasL/My Documents/New Folder/masstigeoct12.xlsb";

Package pkg;

try {

pkg = Package.open(direccion);

XSSFReader r = new XSSFReader(pkg);

SharedStringsTable sst = r.getSharedStringsTable();

XMLReader parser = fetchSheetParser(sst);

Iterator sheets = r.getSheetsData();

while(sheets.hasNext()) {

System.out.println("Processing new sheet:\n");

InputStream sheet = sheets.next();

InputSource sheetSource = new InputSource(sheet);

parser.parse(sheetSource);

sheet.close();

System.out.println("");

}

} catch (InvalidFormatException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (OpenXML4JException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SAXException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void processAllSheets(String filename) throws Exception {

Package pkg = Package.open(filename);

XSSFReader r = new XSSFReader( pkg );

SharedStringsTable sst = r.getSharedStringsTable();

XMLReader parser = fetchSheetParser(sst);

Iterator sheets = r.getSheetsData();

while(sheets.hasNext()) {

System.out.println("Processing new sheet:\n");

InputStream sheet = sheets.next();

InputSource sheetSource = new InputSource(sheet);

parser.parse(sheetSource);

sheet.close();

System.out.println("");

}

}

public static XMLReader fetchSheetParser(SharedStringsTable sst) throws SAXException {

XMLReader parser =

XMLReaderFactory.createXMLReader(

"org.apache.xerces.parsers.SAXParser"

);

ContentHandler handler = new SheetHandler(sst);

parser.setContentHandler(handler);

return parser;

}

private static class SheetHandler extends DefaultHandler {

private SharedStringsTable sst;

private String lastContents;

private boolean nextIsString;

private SheetHandler(SharedStringsTable sst) {

this.sst = sst;

}

public void startElement(String uri, String localName, String name,

Attributes attributes) throws SAXException {

// c => cell

if(name.equals("c")) {

// Print the cell reference

System.out.print(attributes.getValue("r") + " - ");

// Figure out if the value is an index in the SST

String cellType = attributes.getValue("t");

if(cellType != null && cellType.equals("s")) {

nextIsString = true;

} else {

nextIsString = false;

}

}

// Clear contents cache

lastContents = "";

}

public void endElement(String uri, String localName, String name)

throws SAXException {

// Process the last contents as required.

// Do now, as characters() may be called more than once

if(nextIsString) {

int idx = Integer.parseInt(lastContents);

lastContents = new XSSFRichTextString(sst.getEntryAt(idx)).toString();

nextIsString = false;

}

// v => contents of a cell

// Output after we've seen the string contents

if(name.equals("v")) {

System.out.println(lastContents);

}

}

public void characters(char[] ch, int start, int length)

throws SAXException {

lastContents += new String(ch, start, length);

}

}

}

例外是這樣的:

java.io.CharConversionException: Characters larger than 4 bytes are not supported: byte 0x83 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:3474)

at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yylex(PiccoloLexer.java:3958)

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:3439)

at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1270)

at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1257)

at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)

at org.openxmlformats.schemas.spreadsheetml.x2006.main.WorkbookDocument$Factory.parse(Unknown Source)

at org.apache.poi.xssf.eventusermodel.XSSFReader$SheetIterator.(XSSFReader.java:207)

at org.apache.poi.xssf.eventusermodel.XSSFReader$SheetIterator.(XSSFReader.java:166)

at org.apache.poi.xssf.eventusermodel.XSSFReader.getSheetsData(XSSFReader.java:160)

at EDManager.Prueba.main(Prueba.java:36)

該文件有2張,一張有329行和3列,另一張有566行和3列,我只是想讀取文件以查找值是否在第二張表中.

總結

以上是生活随笔為你收集整理的java eventusermodel_异常读取XLSB文件Apache POI java.io.CharConversionException的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品一区二区在线看 | 香蕉911 | 不卡精品| 欧美在线精品一区二区三区 | 天天夜夜骑 | 中文字字幕在线中文乱码电影 | 欧美午夜一区二区三区 | 99久久久无码国产精品性 | 日韩第八页 | 欧美日韩精品一区二区三区视频播放 | 免费小视频在线观看 | 亚洲综合av一区二区三区 | 美攻壮受大胸奶汁(高h) | 熟妇人妻久久中文字幕 | 国产成年妇视频 | 日韩在线第三页 | 国产一级片一区二区 | 欧美日韩国产专区 | 欧美性吧| www.天天操| 色七七久久 | 日韩av三区 | 丁香视频在线观看 | 九九热免费在线视频 | 欧美大尺度做爰啪啪床戏明星 | 欧美一二三视频 | 久久久亚洲一区二区三区 | 伊人草| 欧美一区欧美二区 | 传媒一区二区 | 精品人妻视频在线 | 亚洲视频在线观看一区二区三区 | 久久久一级 | 日日操日日爽 | 日本69视频 | 国产剧情精品 | 欧美国产激情 | 日韩一级在线视频 | а中文在线天堂 | 成人导航网站 | 免费视频久久 | www.黄色小说.com | 天堂网视频 | 一级大片免费观看 | 多男调教一女折磨高潮高h 国内毛片毛片毛片毛片毛片 | 性欧美丰满熟妇xxxx性 | av手机| 卡通动漫精品一区二区三区 | 操皮视频| 欧洲精品久久久久毛片完整版 | 一区二区在线免费视频 | 欧美精品三区 | 成人精品一区二区三区视频 | 欧美一级片一区 | 国产美女极度色诱视频www | 丁香激情综合 | 中文字幕第一页在线播放 | 精品无码人妻一区二区三区 | 中文在线一区二区三区 | a久久久久| 免费在线不卡视频 | 波多野结衣mp4 | 婷婷丁香激情 | 女人被灌满精子 | 国产色诱视频 | 天天摸夜夜 | 中文字幕精品一二三四五六七八 | 丰满孕妇性春猛交xx大陆 | 成人爱爱| 国产传媒视频在线 | 另类视频在线观看+1080p | 国产99久久久国产精品免费看 | 林由奈在线观看 | 99精品视频免费版的特色功能 | 激情福利网 | 69影院少妇在线观看 | 亚洲免费网 | 黄色综合网 | 国产一区二区三区四区五区六区 | 奇米影视一区二区 | 97成人资源 | 国产成人精品亚洲精品色欲 | 三级影片在线播放 | 日日夜夜av| 亚洲国产中文在线 | 欧美成人精品一区二区三区在线看 | 日韩毛片在线 | 三级网站免费 | 欧美福利专区 | 国产日韩激情 | av首页在线 | 国产视频精品在线 | 中国亚洲女人69内射少妇 | 国内久久精品视频 | 国产在线小视频 | 中文免费av | 天天摸天天碰天天爽天天弄 | 亚洲无套 | 久伊人网 |