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 导入/导出 工具类的更多相关文章

  1. 一个基于POI的通用excel导入导出工具类的简单实现及使用方法

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  2. Java基础学习总结(49)——Excel导入导出工具类

    在项目的pom文件中引入 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifac ...

  3. java中excel导入\导出工具类

    1.导入工具 package com.linrain.jcs.test; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import ...

  4. 【原创】POI操作Excel导入导出工具类ExcelUtil

    关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.Th ...

  5. 使用回调方式写POI导入excel工具类

    场景是这样的:为了做一个excel导入的功能,为了尽可能的写一个通用的工具类,将与poi有关的东西都封装起来,以便以其他人员只用关心自己的业务,不用和poi打交道. 写到最后,现在还是会有poi的东西 ...

  6. java Excel导入导出工具类

    本文章,导入导出依赖提前定义好的模板 package com.shareworx.yjwy.utils; import java.io.File; import java.io.FileInputSt ...

  7. java word导入导出工具类

    package com.shareworx.yjwy.utils; import java.io.InputStream; import java.util.HashMap; import java. ...

  8. java简易excel导入导出工具(封装POI)

    Octopus 如何导入excel 如何导出excel github项目地址 Octopus Octopus 是一个简单的java excel导入导出工具. 如何导入excel 下面是一个excel文 ...

  9. Octopus——excel导入导出工具

    Octopus Octopus是一个简易的Excel导入导出工具.目前主要就两个功能: 导入:将excel中一行数据转换为指定的java对象,并通过指定的正则表达式检查合法性. 导出:按照给定的xml ...

随机推荐

  1. 【转】由DFT推导出DCT

    原文地址:http://blog.sina.com.cn/s/blog_626631420100xvxd.htm 已知离散傅里叶变换(DFT)为: 由于许多要处理的信号都是实信号,在使用DFT时由于傅 ...

  2. insertion Sort List (链表的插入排序) leecode java

    逻辑简单,代码难写,基础不劳,leecode写注释不能出现中文,太麻烦,我写了大量注释,链表问题最重要的就是你那个指针式干啥的 提交地址https://oj.leetcode.com/problems ...

  3. (转)如何在Excel2013中制作条形码

    文章来源:http://www.officezhushou.com/excel2013/3905.html 注意:如果发现条形码不能移动的情况,请点击开发工具-设计模式,那么你就可以移动你的条形码了 ...

  4. HW5.1

    public class Solution { public static void main(String[] args) { int count = 0; for(int i = 1; i < ...

  5. C辗转相除法求最大公约数的实现

    int gcd(int a, int b)//求最大公约数,a为分子,b为分母 { ) return a; return gcd(b,a%b); }

  6. CF_402D Upgrading Array 因式分解

    题目链接:http://codeforces.com/problemset/problem/402/D /**算法分析: */ #include<bits/stdc++.h> #defin ...

  7. C++ Primer 练习7.32(C++ Primer读书笔记)

    第七章 类 练习7.32  定义你自己的Screen和Window_mgr,其中clear是Window_mgr的成员,是Screen的友元. 由于Window_mgr中含有Screen对象,所以在W ...

  8. JavaScript- The Good Parts Chapter 6

    Thee(你) I’ll chase(追逐:追捕) hence(因此:今后), thou(你:尔,汝) wolf in sheep’s array.—William Shakespeare, The ...

  9. Robotium学习笔记三

    以下是从网络上抄录的一些Robotium注意事项 1)有些button没有string,没有text,只能通过index来click这样很不直观,而且button的index并不是固定的,有可能随着控 ...

  10. 来自奢侈品行业的CEO能给苹果带来什么?

    重回苹果的奢侈品大佬:保罗丹诺威 作为伊夫·圣罗兰(Saint Laurent)时尚集团的前CEO,保罗丹诺威(Paul Deneve)9月将正式加入苹果公司,并负责该公司所谓的“特殊项目”,同时直接 ...