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 ...
随机推荐
- 跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量
跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量 This example program demonstrates the basic usage of a measure object. ...
- eclipse svn安装
SVN插件下载地址及更新地址,你根据需要选择你需要的版本.现在最新是1.8.x Links for 1.8.x Release: Eclipse update site URL: http://sub ...
- HW5.15
public class Solution { public static void main(String[] args) { System.out.printf("%10s\t%10s\ ...
- MSSQLSERVER数据库- 判断全局临时表是否存在
写一下今天遇到的一个问题. 今天因为一些作用域的问题,我使用了全局临时表,然后我在存储过程里使用了这么一段语句,想判断全局临时表是否存在,如果不存在,则将他DROP掉. 可是这段语句没用. if ex ...
- 为什么Form.Timer的event handler在Form被Dispose之后还是被调到了?
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:为什么Form.Timer的event handler在Form被Dispose之后还是被调到了?.
- [置顶] Ubuntu 12.04中文输入法的安装
Ubuntu 12.04中文输入法的安装 Ubuntu上的输入法主要有小小输入平台(支持拼音/二笔/五笔等),Fcitx,Ibus,Scim等.其中Scim和Ibus是输入法框架. 在Ubuntu的中 ...
- 运行时动态修改webconfig
网站运行时,如果直接手动修改webconfig.xml,会造成线程池重启,对于PV大的网站来说风险是很大的,并且如果有多台服务器,逐台修改也会造成数据不一致. .NET 2.0后可以通过代码修改web ...
- ubuntu 远程 ubuntu
一:被远程端ubuntu配置 參考windows远程ubuntu这篇文章里面的ubuntu配置 二:远程端ubuntu配置 1:打开Remmina Remote Desktop Client软件,例如 ...
- Oracle 11g client的安装和配置。
数据库和client在不同的机器之上. 在安装之前,在安装Oracle数据库的server上导航到以下的文件夹. 将listener.ora和tnsnames.ora中的host中的localhost ...
- mydumper工作原理, seconds_behind_master的陷阱和pt-heartbeat (102)
http://blog.itpub.net/15480802/cid-84815-list-1/