poi 导入/导出 工具类
package com.holy.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ExcelExporterOrImp {
/**
* 导出数据
* @param os
* @param data
* @throws IOException
*/
public static void exportToExcel(OutputStream os, List<List<String>> data) throws IOException {
HSSFWorkbook wb=null;
try {
wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Data"); for (int r = 0 ; r < data.size() ; r++) {
HSSFRow row = sheet.createRow(r); List<String> cols = data.get(r);
for (int c = 0 ; c < cols.size() ; c++) {
HSSFCell cell = row.createCell(c);
cell.setCellValue(new HSSFRichTextString(cols.get(c)));
}
} } catch (Exception e) { e.printStackTrace();
}finally{
if(wb!=null){
wb.write(os);
}
os.flush();
os.close();
}
}
/**
* 数据导入
* @param is
* @return
* @throws IOException
*/
public static List<List<String>> importFromExcel(InputStream is) throws IOException {
HSSFWorkbook wb = new HSSFWorkbook(is);
HSSFSheet sheet = wb.getSheetAt(0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
List<List<String>> data = new ArrayList<List<String>>();
try {
for (int r = sheet.getFirstRowNum() ; r <= sheet.getLastRowNum() ; r++) {
HSSFRow row = sheet.getRow(r);
if (row == null) {
continue;
} List<String> cols = new ArrayList<String>();
for (int c = row.getFirstCellNum() ; c < row.getLastCellNum() ; c++) {
HSSFCell cell = row.getCell(c);
if (cell == null) {
cols.add("");
} else {
switch(cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
cols.add(cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
cols.add(""+cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) {
cols.add(sdf.format(cell.getDateCellValue()));
} else {
cols.add(""+cell.getNumericCellValue());
} break;
case HSSFCell.CELL_TYPE_FORMULA:
cols.add(cell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_BLANK:
cols.add("");
break;
}
}
} data.add(cols);
}
} finally {
is.close();
}
return data;
}
/**
*
* @param is
* @param firstCellNum
* @param lastCellNum
* @return
* @throws IOException
*/
public static List<List<String>> importFromExcelWithCell(InputStream is,int firstCellNum,int lastCellNum) throws IOException {
HSSFWorkbook wb = new HSSFWorkbook(is);
HSSFSheet sheet = wb.getSheetAt(0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
List<List<String>> data = new ArrayList<List<String>>();
try {
for (int r = sheet.getFirstRowNum() ; r <= sheet.getLastRowNum() ; r++) {
HSSFRow row = sheet.getRow(r);
if (row == null) {
continue;
} List<String> cols = new ArrayList<String>();
for (int c = firstCellNum ; c < lastCellNum ; c++) {
HSSFCell cell = row.getCell(c);
if (cell == null) {
cols.add("");
} else {
switch(cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
cols.add(cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
cols.add(""+cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) {
cols.add(sdf.format(cell.getDateCellValue()));
} else {
cols.add(""+cell.getNumericCellValue());
} break;
case HSSFCell.CELL_TYPE_FORMULA:
cols.add(cell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_BLANK:
cols.add("");
break;
}
}
} data.add(cols);
}
} finally {
is.close();
}
return data;
}
/**
* 该方法把num类型强转成了string
* @param is
* @param firstCellNum
* @param lastCellNum
* @return
* @throws IOException
*/
public static List<List<String>> importFromExcelWithCellWithNUm(InputStream is,int firstCellNum,int lastCellNum) throws IOException {
HSSFWorkbook wb = new HSSFWorkbook(is);
HSSFSheet sheet = wb.getSheetAt(0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
DecimalFormat df = new DecimalFormat("#");
List<List<String>> data = new ArrayList<List<String>>();
try {
for (int r = sheet.getFirstRowNum() ; r <= sheet.getLastRowNum() ; r++) {
HSSFRow row = sheet.getRow(r);
if (row == null) {
continue;
} List<String> cols = new ArrayList<String>();
for (int c = firstCellNum ; c < lastCellNum ; c++) {
HSSFCell cell = row.getCell(c);
if (cell == null) {
cols.add("");
} else {
switch(cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
cols.add(cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
cols.add(""+cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) {
cols.add(sdf.format(cell.getDateCellValue()));
} else { cols.add( ""+df.format(cell.getNumericCellValue()));
// cols.add(""+cell.getNumericCellValue());
} break;
case HSSFCell.CELL_TYPE_FORMULA:
cols.add(cell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_BLANK:
cols.add("");
break;
}
}
} data.add(cols);
}
} finally {
is.close();
}
return data;
} /***
* 该方法把导入excel时对于数字类型的数据进行处理
* 一般情况下excel中数字太长会转化成科学计数法
* @param is
* @return
* @throws IOException
*/
public static List<List<String>> importExcelWithCellWithNum(InputStream is) throws IOException {
HSSFWorkbook wb = new HSSFWorkbook(is);
HSSFSheet sheet = wb.getSheetAt(0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
DecimalFormat df = new DecimalFormat("#");
List<List<String>> data = new ArrayList<List<String>>();
try {
for (int r = sheet.getFirstRowNum() ; r <= sheet.getLastRowNum() ; r++) {
HSSFRow row = sheet.getRow(r);
if (row == null) {
continue;
} List<String> cols = new ArrayList<String>();
for (int c = row.getFirstCellNum() ; c < row.getLastCellNum() ; c++) {
HSSFCell cell = row.getCell(c);
if (cell == null) {
cols.add("");
} else {
switch(cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
cols.add(cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
cols.add(""+cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) {
cols.add(sdf.format(cell.getDateCellValue()));
} else {
cols.add( ""+df.format(cell.getNumericCellValue()));
}
break;
case HSSFCell.CELL_TYPE_FORMULA:
cols.add(cell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_BLANK:
cols.add("");
break;
}
}
} data.add(cols);
}
} finally {
is.close();
}
return data;
} public static List<List<String>> importExcelWithNullCell(InputStream is) throws IOException {
HSSFWorkbook wb = new HSSFWorkbook(is);
HSSFSheet sheet = wb.getSheetAt(0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
DecimalFormat df = new DecimalFormat("#");
List<List<String>> data = new ArrayList<List<String>>(); try {
int lastCellNum = sheet.getRow(sheet.getFirstRowNum()).getLastCellNum(); for (int r = sheet.getFirstRowNum() ; r <= sheet.getLastRowNum() ; r++) {
HSSFRow row = sheet.getRow(r);
if (row == null) {
continue;
} List<String> cols = new ArrayList<String>();
for (int c = 0 ; c < lastCellNum ; c++) {
HSSFCell cell = row.getCell(c);
if (cell == null) {
cols.add("");
} else {
switch(cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
cols.add(cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:
cols.add(""+cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC:
if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) {
cols.add(sdf.format(cell.getDateCellValue()));
} else {
cols.add( ""+df.format(cell.getNumericCellValue()));
}
break;
case HSSFCell.CELL_TYPE_FORMULA:
cols.add(cell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_BLANK:
cols.add("");
break;
}
}
} data.add(cols);
}
} finally {
is.close();
}
return data;
} public static void main(String[] args) throws IOException { FileOutputStream os = new FileOutputStream(new File("d:/test.xls"));
List<List<String>> data = new ArrayList<List<String>>();
List<String> s = new ArrayList<String>();
s.add("11");
s.add("22");
s.add("33");
data.add(s);
List<String> s1 = new ArrayList<String>();
s1.add("11");
s1.add("22");
s1.add("33");
data.add(s1);
exportToExcel(os, data);
System.out.println("data:"+data); // FileInputStream is = new FileInputStream(new File("d:/bank.xlsx"));
// List<List<String>> data = importFromExcel(is);
// System.out.println("data:"+data);
} }
poi 导入/导出 工具类的更多相关文章
- 一个基于POI的通用excel导入导出工具类的简单实现及使用方法
前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...
- Java基础学习总结(49)——Excel导入导出工具类
在项目的pom文件中引入 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifac ...
- java中excel导入\导出工具类
1.导入工具 package com.linrain.jcs.test; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import ...
- 【原创】POI操作Excel导入导出工具类ExcelUtil
关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.Th ...
- 使用回调方式写POI导入excel工具类
场景是这样的:为了做一个excel导入的功能,为了尽可能的写一个通用的工具类,将与poi有关的东西都封装起来,以便以其他人员只用关心自己的业务,不用和poi打交道. 写到最后,现在还是会有poi的东西 ...
- java Excel导入导出工具类
本文章,导入导出依赖提前定义好的模板 package com.shareworx.yjwy.utils; import java.io.File; import java.io.FileInputSt ...
- java word导入导出工具类
package com.shareworx.yjwy.utils; import java.io.InputStream; import java.util.HashMap; import java. ...
- java简易excel导入导出工具(封装POI)
Octopus 如何导入excel 如何导出excel github项目地址 Octopus Octopus 是一个简单的java excel导入导出工具. 如何导入excel 下面是一个excel文 ...
- Octopus——excel导入导出工具
Octopus Octopus是一个简易的Excel导入导出工具.目前主要就两个功能: 导入:将excel中一行数据转换为指定的java对象,并通过指定的正则表达式检查合法性. 导出:按照给定的xml ...
随机推荐
- map的基本操作函数及含义
map的基本操作函数: C++ Maps是一种关联式容器,包含“关键字/值”对 begin() 返回指向map头部的迭代器 clear() ...
- hdoj 1237 简单计算器
简单计算器 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- [四]SpringMvc学习-对servlet与json的支持与实现
1.对servletAPI的支持 request.response.session作为参数自动注入 2.对Json的支持 2.1springmvc配置文件中添加支持对象与json的转换 <mvc ...
- (二)在.net中如何使用Memcached
Step1:第一步当然是下载Memcached for c# API,
- (一)Redis初学教程之安装篇
1.下载windows下Redis服务安装程序(有32位的和64位的,识操作系统安装) 下载地址:https://github.com/dmajkic/redis/downloads 2.安装教程(详 ...
- MSSQLSERVER数据库- 字符串分割函数返回类型表
遇到这样一个问题,存储在数据库的数据是一串字符串如:1,2,3,4,5,6.想把这串字符串进行转变成一个表格,如下: 1 2 3 4 5 6 就是这样一个问题,有人同事,写了一个这样的封装函数,这样就 ...
- [微信小程序] 终于可以愉快的使用 async/await 啦
[小程序] 终于可以愉快的使用 async/await 啦 这篇文章主要是想说一下 怎么在微信小程序中使用async/await从而逃离回调地狱 背景 最近一直在搞微信小程序 用的语言是TypeScr ...
- 过滤器Filter(2)
过滤器-编码统一处理 过滤器的写法如下 package com.gqx.encodeFilter; import java.io.IOException; import java.lang.refle ...
- An existing PostgreSql installation has been found... 的解决
PostgreSql卸载之后,重新安装时跳出如下信息: Anexisting PostgreSql installation has been found atC:\ProgramFiles\Post ...
- Activity 的启动模式
好久没用过那几种activity的启动模式了,如今看到singletop竟然傻了眼,完全忘记了这几种启动模式的区别!隧将两年前的总结翻出来,通读一遍那晦涩难懂的记录,又理解了一遍,在以前记录的基础上, ...