openxml sdk java_openxml能用在java里面么

展开全部

我也遇到了32313133353236313431303231363533e4b893e5b19e31333363383334同样的问题.

如果操作xls文件的时候没有问题, 当操作xlsx文件的时候就会报这个错.

我的问题已经解决了.

原因: 主要是因为xls和xlsx的解析方式不一样, 导致使用的类不同.

xls返回的是HSSFWorkbook   , 而xlsx返回的是XSSFWorkbook.

我自己试验了一种方法是:

HSSFWorkbook book;

try {

book = new HSSFWorkbook(in);

} catch (Exception ex) {

book = new XSSFWorkbook(in);

}

其结果不尽人意, 而且报错莫名其妙.(反正我是没搞懂).

进入正题: 以下方法是正解,新建个方法, 返回HSSFWorkbook和XSSFWorkbook所实现的接口

public static Workbook create(InputStream inp) throws IOException,InvalidFormatException {

if (!inp.markSupported()) {

inp = new PushbackInputStream(inp, 8);

}

if (POIFSFileSystem.hasPOIFSHeader(inp)) {

return new HSSFWorkbook(inp);

}

if (POIXMLDocument.hasOOXMLHeader(inp)) {

return new XSSFWorkbook(OPCPackage.open(inp));

}

throw new IllegalArgumentException("你的excel版本目前poi解析不了");

}

2.在new Workbook对象的时候直接调用该静态方法去构造.

Workbook book = XlsImpUtil.create(in);

3. 切记, 如果workbook使用了接口的话, 那么Sheet也一定要用接口, 不要用实现类了.

Sheet sheet = book.getSheetAt(0);

解答完毕. 兄弟给点分吧, 都不容易

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值