需要的jar包

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.14</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.14</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><exclusions><exclusion><groupId>xerces</groupId><artifactId>xercesImpl</artifactId></exclusion></exclusions><version>3.14</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.14</version><optional>true</optional>
</dependency>

导入Excel

package com.zyzh.commons.utils;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;  import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
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.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;
/** * excel读写工具类 */
public class POIUtil {  private static Logger logger  = Logger.getLogger(POIUtil.class);  private final static String xls = "xls";  private final static String xlsx = "xlsx";  /** * 读入excel文件,解析后返回 * @param file * @throws IOException  */  public static List<String[]> readExcel(MultipartFile file) throws IOException{  //检查文件  checkFile(file);  //获得Workbook工作薄对象  Workbook workbook = getWorkBook(file);  //创建返回对象,把每行中的值作为一个数组,所有行作为一个集合返回  List<String[]> list = new ArrayList<String[]>();  if(workbook != null){  for(int sheetNum = 0;sheetNum < workbook.getNumberOfSheets();sheetNum++){  //获得当前sheet工作表  Sheet sheet = workbook.getSheetAt(sheetNum);  if(sheet == null){  continue;  }  //获得当前sheet的开始行  int firstRowNum  = sheet.getFirstRowNum();  //获得当前sheet的结束行  int lastRowNum = sheet.getLastRowNum();  //循环除了第一行的所有行  for(int rowNum = firstRowNum+1;rowNum <= lastRowNum;rowNum++){  //获得当前行  Row row = sheet.getRow(rowNum);  if(row == null){  continue;  }  //获得当前行的开始列  int firstCellNum = row.getFirstCellNum();  //获得当前行的列数  int lastCellNum = row.getPhysicalNumberOfCells();  String[] cells = new String[row.getPhysicalNumberOfCells()];  //循环当前行  for(int cellNum = firstCellNum; cellNum < lastCellNum;cellNum++){  Cell cell = row.getCell(cellNum);  cells[cellNum] = getCellValue(cell);  }  list.add(cells);  }  }  workbook.close();  }  return list;  }  public static void checkFile(MultipartFile file) throws IOException{  //判断文件是否存在  if(null == file){  logger.error("文件不存在!");  throw new FileNotFoundException("文件不存在!");  }  //获得文件名  String fileName = file.getOriginalFilename();  //判断文件是否是excel文件  if(!fileName.endsWith(xls) && !fileName.endsWith(xlsx)){  logger.error(fileName + "不是excel文件");  throw new IOException(fileName + "不是excel文件");  }  }  public static Workbook getWorkBook(MultipartFile file) {  //获得文件名  String fileName = file.getOriginalFilename();  //创建Workbook工作薄对象,表示整个excel  Workbook workbook = null;  try {  //获取excel文件的io流  InputStream is = file.getInputStream();  //根据文件后缀名不同(xls和xlsx)获得不同的Workbook实现类对象  if(fileName.endsWith(xls)){  //2003  workbook = new HSSFWorkbook(is);  }else if(fileName.endsWith(xlsx)){  //2007  workbook = new XSSFWorkbook(is);  }  } catch (IOException e) {  logger.info(e.getMessage());  }  return workbook;  }  public static String getCellValue(Cell cell){  String cellValue = "";  if(cell == null){  return cellValue;  }  //把数字当成String来读,避免出现1读成1.0的情况  if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC){  cell.setCellType(Cell.CELL_TYPE_STRING);  }  //判断数据的类型  switch (cell.getCellType()){  case Cell.CELL_TYPE_NUMERIC: //数字  cellValue = String.valueOf(cell.getNumericCellValue());  break;  case Cell.CELL_TYPE_STRING: //字符串  cellValue = String.valueOf(cell.getStringCellValue());  break;  case Cell.CELL_TYPE_BOOLEAN: //Boolean  cellValue = String.valueOf(cell.getBooleanCellValue());  break;  case Cell.CELL_TYPE_FORMULA: //公式  cellValue = String.valueOf(cell.getCellFormula());  break;  case Cell.CELL_TYPE_BLANK: //空值   cellValue = "";  break;  case Cell.CELL_TYPE_ERROR: //故障  cellValue = "非法字符";  break;  default:  cellValue = "未知类型";  break;  }  return cellValue;  }  /*** 导出* @param result (内层List放导出的每一行的数据)* @param os* @param sheetStr* @throws IOException*/public static void exportExcel(List<List<String>> result, OutputStream os,String fileName) throws IOException {// 建立excel并导出HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = workbook.createSheet(sheetStr);HSSFCellStyle style = workbook.createCellStyle();HSSFRow row = null;HSSFCell cell = null;for (int i = 0; i < result.size(); i++) {List<String> list = result.get(i);row = sheet.createRow(i);for (int j = 0; j < list.size(); j++) {cell = row.createCell(j);cell.setCellStyle(style);cell.setCellValue(list.get(j));}}workbook.write(os);workbook.close();}}

POI导入和导出Excel相关推荐

  1. Java中使用poi导入、导出Excel

    Java中使用poi导入.导出Excel 学习了:http://www.cnblogs.com/Damon-Luo/p/5919656.html 转载于:https://www.cnblogs.com ...

  2. POI导入和导出Excel总结

    POI导入和导出Excel总结 POI使用总结 1.POI读取Excel 打开工作簿的方式有以下两种简单的应用,POI读取和输出工作簿文件都可以通过以下两种方式来声明: //通过输入流的方式打开本地磁 ...

  3. POI 导入、导出Excel

    POI,全称Apache POI,是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.项目地址:Apache POI - t ...

  4. 使用POI导入和导出 Excel文件

    来源:http://www.blogjava.net/caihualin/archive/2008/05/12/164724.html 1.ExcelWriter.java package com.e ...

  5. 【绝对好用】java poi 导入、导出excel(支持xsl、xslx)

    1.添加依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</arti ...

  6. java导入、导出Excel文件

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

  7. Java中导入、导出Excel——HSSFWorkbook 使用

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

  8. java横向导出excel_Java中导入、导出Excel

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

  9. springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel

    springboot使用jxls导出excel 实现思路: 首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口 ...

最新文章

  1. word的小操作--页码的编辑
  2. VS2008 包加载失败导致VS2008打开 WebApplication项目时没有设计视图
  3. IP地址的基本换算实例
  4. 【若依(ruoyi)】quartz.sql 脚本重新导入时,遇到因foreign key外键无法删除错误#1217
  5. mysql中的double类型_MySQL中float、double、decimal三个浮点类型的区别与总结!
  6. 怎么修改某一软件的服务器,怎样设置一个软件服务器地址
  7. 以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机...
  8. 大数据Hadoop学习记录(5)----Ubuntu16.4下安装配置HBase
  9. 最新米酷6.26影视源码+解析接口+步骤
  10. 量化交易:金融算法交易的前沿发展
  11. 数十年从事java工作的经验分享
  12. 职场分享--职场中如何做一名优秀的员工
  13. 庆祝livid公布Bible的源代码,鼓掌~~
  14. Java程序设计课程教学实践
  15. gcc 编译时中-L -l -Wall的含义
  16. 基于cling2.0的Android DLNA/Upnp客户端基本开发成功
  17. Leetcode 300-最长递增子序列
  18. Linux授予权限命令
  19. 电脑公司Ghost xp SP3 纯净快速装机版【Xp纯净版系统下载】
  20. 小孩孩子应用题计算机错误,为什么一二年级的孩子数学应用题总出错?

热门文章

  1. SDN 教程[2]: SDN基础操作
  2. Android进阶_Handler和Handler.Callback和Message
  3. fiddler 不同版本功能说明
  4. linux 处理匹配文本的前后行
  5. 1789 员工的直属部门
  6. Monitoring(监控)
  7. 简记 2022/9/2
  8. 【bzoj 1812】[Ioi2005]riv(树形dp)
  9. 智能货架安全监测系统
  10. EOS智能合约开发系列(19): 合约应当开源