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 ...
随机推荐
- The Shortest Path in Nya Graph
Problem Description This is a very easy problem, your task is just calculate el camino mas corto en ...
- 多控制器之UIWindow
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- Java笔记(八)……数组
数组的概念 同一种类型数据的集合.其实数组就是一个容器. 数组的好处 可以自动给数组中的元素从0开始编号,方便操作这些元素. 数组的格式 元素类型[] 数组名 = new 元素类型[个数]; int[ ...
- 《Genesis-3D开源游戏引擎--横版格斗游戏制作教程01: 资源导入》
1. 资源导入 概述: 制作一款游戏需要用到很多资源,比如:模型.纹理.声音和脚本等.通常都是用其它相关制作资源软件,完成前期资源的收集工作.比如通常用的三维美术资源,会在Max.MAYA等相应软件中 ...
- zookeeper系列(一)安装
zookeeper是一个分布式应用协调服务,主要用来解决分布式应用配置项的管理.同步服务.集群管理等,它由Java语言编写,但它支持Java和C两种编程语言接口: 环境部署 操作系统:centos ...
- [转]2-SAT问题及其算法
转自:http://www.cppblog.com/MatoNo1/archive/2011/07/13/150766.html [2-SAT问题]现有一个由N个布尔值组成的序列A,给出一些限制关系, ...
- Linux 常见文件打包压缩命令
.tar 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) 参数说明: - ...
- PC-飞起来!我的Windows XP——五步快速优化Windows XP
虽然Microsoft的 Vista已经发售了快一年,但国内大部分系统用户仍使用着目前堪称完美的Windows XP.与以往的Windows操作系统一样,新安装的Windows XP可能还不在最佳状态 ...
- What does enumerable mean?
I was directed to MDN's for..in page when it said, "for..in Iterates over the enumerable proper ...
- Eclipse导入Maven项目时class not found
用maven开发javaweb项目可以自动导包,可以在配置文件pom.xml中发现依赖包,今天在eclipse中导入maven项目,开启tomcat服务器时报错 class not found, 看到 ...