pom.xml


<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>

PoiUtil.java


package com.app.core.util; import com.app.core.code.Symbol;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
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.io.*;
import java.util.ArrayList;
import java.util.List; @Log4j2
public class PoiUtil {
/**
* 将数据写入EXCEL
*
* @param <T>
* @param fileName EXCEL文件名称
* @param sheetName EXCEL页名
* @param data 待写入数据
* @throws Exception
*/
public static <T> void writeExcel(final String fileName, final String sheetName, final List<T[]> data) {
OutputStream out = null;
try {
// 创建 EXCEL 工作簿
XSSFWorkbook workBook = new XSSFWorkbook();
// 创建 EXCEL Sheet 页
XSSFSheet sheet = workBook.createSheet(sheetName);
// 声明 EXCEL 行
XSSFRow row;
// 声明 EXCEL 单元格
XSSFCell cell; // 迭代设置EXCEL每行数据
int rowNo = 0; // 行号
for (T[] objs : data) {
row = sheet.createRow(rowNo++);
// 迭代设置EXCEL当前行每个单元格数据
int cellNo = 0; // 列号
for (T obj : objs) {
cell = row.createCell(cellNo++);
cell.setCellValue(String.valueOf(obj));
}
} // 创建文件所在目录
String filePath = FilenameUtils.getFullPath(fileName);
File file = new File(filePath);
if (!file.exists()) {
file.mkdirs();
}
// 设置文件输出流,写入EXCEL数据
String excelName = StringUtils.join(filePath, FilenameUtils.getBaseName(fileName), Symbol.DOT.getSymbol().concat("xlsx")); out = new FileOutputStream(excelName);
// 写入文件流
workBook.write(out);
workBook.close();
} catch (Exception e) {
log.error("将数据写入EXCEL出错", e);
} finally {
try {
if (null != out) {
out.flush();
out.close();
}
} catch (IOException e) {
log.error("关闭文件输出流出错", e);
}
}
} /**
* 读取EXCEL中指定下标页的数据
*
* @param fileName
* @param sheetIndex
* @return
*/
public static List<String[]> readExcel(final String fileName, final Integer sheetIndex) {
List<String[]> list = null;
InputStream in = null;
try {
// 获取文件输入流
String excelName = StringUtils.join(FilenameUtils.getFullPath(fileName), FilenameUtils.getBaseName(fileName), Symbol.DOT.getSymbol().concat("xlsx"));
in = new FileInputStream(excelName);
// 创建 EXCEL 工作簿
XSSFWorkbook workBook = new XSSFWorkbook(in);
// 获取 EXCEL Sheet 页
XSSFSheet sheet = workBook.getSheetAt(sheetIndex); list = new ArrayList<String[]>();
String[] strArr = null;
// 遍历每行记录
for (Row row : sheet) {
strArr = new String[row.getPhysicalNumberOfCells()];
// 遍历每单元格记录
for (Cell cell : row) {
// 根据单元格的类型获取不同数据类型的值
CellType cellType = cell.getCellTypeEnum();
if (CellType.NUMERIC.equals(cellType))
strArr[cell.getColumnIndex()] = String.valueOf(cell.getNumericCellValue());
else if (CellType.STRING.equals(cellType))
strArr[cell.getColumnIndex()] = cell.getStringCellValue();
}
// 将数据放入集合
list.add(strArr);
} workBook.close();
} catch (Exception e) {
log.error("读取EXCEL中指定下标页的数据出错", e);
} finally {
try {
if (null != in)
in.close();
} catch (IOException e) {
log.error("关闭文件输入流出错", e);
}
}
return list;
}
}

Symbol.java 标点符号枚举


package com.app.core.code; public enum Symbol {
/**
* 逗号
*/
COMMA(","),
/**
* 句号
*/
DOT("."),
/**
* 冒号
*/
COLON(":"),
/**
* 分号
*/
SEMICOLON(";"),
/**
* 斜杠
*/
SLASH("/"),
/**
* 反斜杠
*/
BACKSLASH("\\"),
/**
* 加号
*/
PLUS("+"),
/**
* 减号
*/
DASH("-"),
/**
* 等号
*/
EQUALS("="),
/**
* 下划线
*/
UNDERSCORE("_"),
/**
* 左方括号
*/
LEFT_SQUARE_BRACKET("["),
/**
* 右方括号
*/
RIGHT_SQUARE_BRACKET("]"),
/**
* 左大括号
*/
LEFT_CURLY_BRACE("{"),
/**
* 右大括号
*/
RIGHT_CURLY_BRACE("}"),
/**
* 与
*/
AMPERSAND("&"),
/**
* 重音符(Tab键上面)
*/
ACCENT("`"),
/**
* 换行符
*/
LINE_BREAK("\r\n"); private final String symbol; Symbol(String symbol) {
this.symbol = symbol;
} public String getSymbol() {
return symbol;
}
}

Apache POI 工具类 [ PoiUtil ]的更多相关文章

  1. 关于Excel导入导出POI工具类

    import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import ...

  2. Apache Commons 工具类介绍及简单使用

    转自:http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下 ...

  3. linkin大话数据结构--apache commons工具类

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动. 一.Commons BeanUtils 说明:针对Bean的一个工具集.由于Bean往往是有一堆ge ...

  4. Apache Commons 工具类简单使用

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于 ...

  5. Apache Commons 工具类介绍及简单使用(转载)

    原文链接 http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动 ...

  6. Java:Apache Commons 工具类介绍及简单使用

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. Commons简介 组件 功能介绍 commo ...

  7. poi 工具类

    <!--POI--> <dependency> <groupId>org.apache.poi</groupId> <artifactId> ...

  8. apache StringUtils 工具类

    // org.apache.commons.lang3.StringUtils // 1.IsEmpty/IsBlank - checks if a String contains text 检查是否 ...

  9. apache ArrayUtils 工具类

    org.apache.commons.lang3.ArrayUtils // 1.add():将给定的数据添加到指定的数组中,返回一个新的数组. int[] arr = { 1, 2, 3 }; in ...

随机推荐

  1. fillder script使用

    打开fiddler script editor 在fiddler中Rules -> Customize Rules打开 在editor中点击open, 打开CustomRules.js文件, 对 ...

  2. Unable to run man pages on Centos 6

    I just installed CentOS 6 with minimal install. When i tried to read the linux manual pages using ma ...

  3. 装配bean,基于xml

    一.bean的实例化方式 1.默认构造 <bean id="" class=""></bean> 必须提供默认构造方法 2.静态工厂 用 ...

  4. Redis入门--(二)Jedis的入门

    Jedis相应的jar包 编写一段程序来测试一下 1.新建一个Java的项目 2.引入jedis开发包 3.将包添加到构建路径中 4.创建一个测试类 5.创建一个Jedis的单实例的测试

  5. laravel安装时openssl_encrypt() 的问题?Call to undefined function openssl_decrypt()

    解决方案: 如果通过上面的步骤还是不能解决参考如下: 1.从php安装根目录中拷贝 libeay32.dll 和 ssleay32.dll 然后 覆盖掉apache/bin 下的对应文件(注意需要将h ...

  6. (12)JavaScript之[事件][事件监听]

    事件 /** * 事件: * onload 和 onunload 事件在用户进入或离开页面时被触发 * * onchange事件常结合对输入字段的验证来使用 * onmouseover 和 onmou ...

  7. Native Method

    While a 100% pure Java solution is nice in principle, realistically, for an application, there are s ...

  8. Azure 6 月新公布

    Azure 6 月新发布:磁盘加密预览版 , CDN 用户上传 HTTPS 自有证书及价格调整. Azure 磁盘加密预览版现已在中国发布 Azure 磁盘加密预览版已对 Azure 中国云地区的 W ...

  9. Wampserver由橙变绿的解决过程

    因为C盘的内存问题,就重装了win7系统,那么就面临着很对软件要重新进行安装,安装wampserver时,再次遇到了服务器的图标一直是橙色的而不变绿色,安装包地址: http://download.c ...

  10. April 16 2017 Week 16 Sunday

    Happiness is a way station between too much and too little. 幸福就是刚刚好. I don't want to talk about it a ...