转载:https://blog.csdn.net/Amo_te_ama_me/article/details/50536292

看别人使用POI做过操作EXCEL,今天也下载了个例子使用POI操作excel做一个小测试,当操作excel2003时,要用POI中的HSSFWorkbook类来操作,操作方式如下:

//1、创建工作簿HSSFWorkbook workbook = new HSSFWorkbook();//2、创建工作表HSSFSheet sheet = workbook.createSheet("hello world");//指定工作表名//3、创建行;创建第3行HSSFRow row = sheet.createRow(2);//4、创建单元格;创建第3行第3列HSSFCell cell = row.createCell(2);cell.setCellValue("Hello World");//输出到硬盘FileOutputStream outputStream = new FileOutputStream("D:\\测试.xls");//把excel输出到具体的地址workbook.write(outputStream);workbook.close();outputStream.close();

以上代码到是没有问题,关键是操作excel2007,POI规定操作2007以上版本时要用XSSFWorkbook,直接将以上代码拷贝,HSSFWorkbook 换成XSSFWorkbook

//1、创建工作簿XSSFWorkbook workbook = new XSSFWorkbook();//2、创建工作表XSSFSheet sheet = workbook.createSheet("hello world");//指定工作表名//3、创建行;创建第3行XSSFRow row = sheet.createRow(2);//4、创建单元格;创建第3行第3列XSSFCell cell = row.createCell(2);cell.setCellValue("Hello World");//输出到硬盘FileOutputStream outputStream = new FileOutputStream("D:\\测试.xlsx");//把excel输出到具体的地址workbook.write(outputStream);workbook.close();outputStream.close();

但是此时,报错:javax.xml.stream.XMLEventFactory.newFactory(),卧槽,明明和别人例子上一模一样啊! 
最终解决办法: 
经过查询资料,发现造成这个原因的问题是JDK版本问题,我的编译器是MyEclipse2014,默认JDK1.6是0.13版本,而操作EXCEL07以上要求JDK0.18版本以上。 
于是我就在网上下了个JDK1.60.43版本的,直接解压安装,此时就不用再配置环境了,只要在Myeclipse中配置一下就行了,配置方法为:点这里,然后在你的项目上面,“configure buildPath”,将你原来的JRE版本“Remove”,然后右侧点击“Add Library”,换成新加的. 
直接Finish。

此时再去运行你的项目就OK了!

package com.ljdy.construction.util;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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;/*** * @ClassName: ImportExcelUtil* @Description: excel 导入数据* @author qinzz* @date 2017年1月17日* @time 上午10:28:48*/
public class ImportExcelUtil {public static List<List<Object>> importExcel(File file) throws IOException {String fileName = file.getName();String extension = fileName.lastIndexOf(".") == -1 ? "" : fileName.substring(fileName.lastIndexOf(".") + 1);if ("xls".equals(extension)) {return read2003Excel(file);} else if ("xlsx".equals(extension)) {return read2007Excel(file);} else {throw new IOException("不支持的文件类型");}}/*** 读取 office 2003 excel* * @throws IOException* @throws FileNotFoundException*/private static List<List<Object>> read2003Excel(File file)throws IOException {List<List<Object>> list = new LinkedList<List<Object>>();HSSFWorkbook hwb = new HSSFWorkbook(new FileInputStream(file));HSSFSheet sheet = hwb.getSheetAt(0);Object value = null;HSSFRow row = null;HSSFCell cell = null;for (int i = sheet.getFirstRowNum(); i <= sheet.getPhysicalNumberOfRows(); i++) {row = sheet.getRow(i);if (row == null) {continue;}List<Object> linked = new LinkedList<Object>();for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {cell = row.getCell(j);if (cell == null) {continue;}DecimalFormat df = new DecimalFormat("0");// 格式化 number String// 字符SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串DecimalFormat nf = new DecimalFormat("0");// 格式化数字switch (cell.getCellType()) {case XSSFCell.CELL_TYPE_STRING:// System.out.println(i+"行"+j+" 列 is String type");value = cell.getStringCellValue();break;case XSSFCell.CELL_TYPE_NUMERIC:// System.out.println(i+"行"+j+" 列 is Number type ; DateFormt:"+cell.getCellStyle().getDataFormatString());if ("@".equals(cell.getCellStyle().getDataFormatString())) {value = df.format(cell.getNumericCellValue());} else if ("General".equals(cell.getCellStyle().getDataFormatString())) {value = nf.format(cell.getNumericCellValue());} else {value = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));}break;case XSSFCell.CELL_TYPE_BOOLEAN:// System.out.println(i+"行"+j+" 列 is Boolean type");value = cell.getBooleanCellValue();break;case XSSFCell.CELL_TYPE_BLANK:// System.out.println(i+"行"+j+" 列 is Blank type");value = "";break;default:// System.out.println(i+"行"+j+" 列 is default type");value = cell.toString();}if (value == null || "".equals(value)) {continue;}linked.add(value);}list.add(linked);}return list;}/*** 读取Office 2007 excel* */private static List<List<Object>> read2007Excel(File file)throws IOException {List<List<Object>> list = new LinkedList<List<Object>>();// 构造 XSSFWorkbook 对象,strPath 传入文件路径XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(file));// 读取第一章表格内容XSSFSheet sheet = xwb.getSheetAt(0);Object value = null;XSSFRow row = null;XSSFCell cell = null;for (int i = sheet.getFirstRowNum(); i <= sheet.getPhysicalNumberOfRows(); i++) {row = sheet.getRow(i);if (row == null) {continue;}List<Object> linked = new LinkedList<Object>();for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {cell = row.getCell(j);if (cell == null) {continue;}DecimalFormat df = new DecimalFormat("0");// 格式化 number String// 字符SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串DecimalFormat nf = new DecimalFormat("0");// 格式化数字switch (cell.getCellType()) {case XSSFCell.CELL_TYPE_STRING:// System.out.println(i+"行"+j+" 列 is String type");value = cell.getStringCellValue();break;case XSSFCell.CELL_TYPE_NUMERIC:// System.out.println(i+"行"+j+" 列 is Number type ; DateFormt:"+cell.getCellStyle().getDataFormatString());if ("@".equals(cell.getCellStyle().getDataFormatString())) {value = df.format(cell.getNumericCellValue());} else if ("General".equals(cell.getCellStyle().getDataFormatString())) {value = nf.format(cell.getNumericCellValue());} else {value = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));}break;case XSSFCell.CELL_TYPE_BOOLEAN:// System.out.println(i+"行"+j+" 列 is Boolean type");value = cell.getBooleanCellValue();break;case XSSFCell.CELL_TYPE_BLANK:// System.out.println(i+"行"+j+" 列 is Blank type");value = "";break;default:// System.out.println(i+"行"+j+" 列 is default type");value = cell.toString();}if (value == null || "".equals(value)) {continue;}linked.add(value);}list.add(linked);}return list;}public static void main(String[] args) throws IOException {// excel 导入数据demoFile file = new File("C:\\gt_info0.xlsx");
//      File file = new File("C:\\gt_info.xlsx");
//      File file = new File("C:\\gt_info_bak.xls");List<List<Object>> dataList = importExcel(file);for (int i = 1; i < dataList.size(); i++) {for (int j = 1; j < dataList.get(i).size(); j++) {System.out.println(dataList.get(i).get(j));}System.out.println("------------------");}}
}

POI操作EXCEL2007,报javax.xml.stream.XMLEventFactory.newFactory()错误!相关推荐

  1. javax.xml.stream.XMLStreamException: Prefix cannot be null

    近日在把程序从jboss移动到jetty服务器时,使用jaxb的地方在Marshal的时候会抛上面的异常,堆栈信息如下: ERROR [com.cmri.mcss.web.servlet.confmg ...

  2. java elementtext_java命名空间javax.xml.stream接口xmlstreamreader成员方法: getelementtext定义参考...

    读取纯文本元素的内容,如果不是纯文本元素,则抛出异常.无论 javax.xml.stream.iscoalescing 的值如何,此方法始终返回组合的内容. 前置条件:当前事件是 start_elem ...

  3. C#操作FTP报错,远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件)的解决方法

    C#操作FTP报错,远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件)的解决方法 参考文章: (1)C#操作FTP报错,远程服务器返回错误:(550)文件不可用(例如,未找到文 ...

  4. poi 操作excel2007总结

    这是两个例程,是演示如何使用Java读取和写入Excel 2007 文件.注释里有比较详细的开发环境说明,你只要在Eclipse里粘过去不可以运行了. 例程使用的是POI-XSSF,而不是HSSF,这 ...

  5. 导入项目到IDEA报javax/xml/bind/DatatypeConverter错误?

    异常信息: ERROR c.r.f.w.e.GlobalExceptionHandler - [handleException,83] - Handler dispatch failed; neste ...

  6. 安卓项目编译出现javax.xml.bind.JAXBException的错误

    项目场景: android studio升级到了最新白狐版 项目编译出现了很多错误,项目比较老都不是androidX工程一路解决下来最后一个错误是 Unable to load class 'java ...

  7. POI操作Excel2007实例二之“SXSSFWorkbook”处理海量数据

    前文链接:POI实现读写Excel2007完整示例--每分钟约处理7000行数据 前文讲述了 POI 读取的基本操作,但后期 经过试验,当写入数据量超过5万条以上时, 很容易报错"内存溢出& ...

  8. Spring学习记录-Java 11运行eureka-server报javax.xml.bind.JAXBContext not present错

    在pom.xml加入依赖就行 <dependency><groupId>org.glassfish.jaxb</groupId><artifactId> ...

  9. android studio找不到javax.xml.stream.*问题记录

    stream包在jdk1.5以上开始支持,网上大都是升级jdk版本.但本地已是1.8版本,且项目也设置为1.8版本,但始终无效. 最后在这边博客中找到办法直接依赖本地jar文件即可! 链接地址:htt ...

最新文章

  1. 用计算机解组合题,计算机组成原理试题解析5
  2. druid seata 配置_五分钟体验分布式事务框架Seata
  3. 【Android 组件化】使用 Gradle 实现组件化 ( 组件 / 集成模式下的 Library Module 开发 )
  4. (转)Fedora 17 安装完全指南
  5. Python:每日一题001
  6. 解决:Intellij idea 启动项目报错 error:java: 无效的源发行版: 8
  7. 漫步微积分七——连续函数
  8. Teamcenter开发问题之-- relation 无法创建 and 无法check in
  9. 获取163邮箱的邮件 并下载附件
  10. Unity 通过代码修改材质球属性
  11. 实例分割最全综述(上):二阶段实例分割和一阶段实例分割
  12. VUE-17 图片的获取,购物车商品数量的添加与减少,计算整个购物车商品的价格(循环)
  13. python中time是什么意思_python中time的基本介绍
  14. 【数据结构之二叉树】——二叉树的概念及结构,特殊的二叉树和二叉树性质
  15. 【STM32H7教程】第24章 STM32H7的Cache解读(非常重要)
  16. MVG学习笔记(5) --四视图几何和n视图重建
  17. NameError: name 'QApplication' is not defined 的解决办法
  18. 洛谷p1618 三连击(升级版)(python)
  19. 数字图像处理 使用C#进行图像处理六 内存映射文件
  20. 在HTML网页中怎么使用jquery,怎么调用jquery

热门文章

  1. 输入学号姓名输出学号姓名c语言,急啊!!!求救了 C语言编一个链表,输出姓名和学号就好...
  2. html 盒子重叠,CSS3 box-shadow用于重叠的div
  3. OpenShift 4 - Knative教程 (3) 了解Knative Serving的核心对象
  4. 如何搜索旅行的好地方(MongoDb LINQ和.NET Core)
  5. 使C#代码现代化——第一部分:属性
  6. 谷歌开源 TensorFlow 的简化库 JAX
  7. 关于.NET的单元测试
  8. 把配置的jenkins主路径删掉_Jenkins详细教程
  9. 如何用python中的turtle库画三角形_Python如何使用turtle库绘制图形
  10. 关于Date类型、时间戳格式转换方法