`
ErHuo
  • 浏览: 21530 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

POI Excel导入导出

阅读更多
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FilenameUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellValue;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  
/** 
 * Excel组件 
 *  
 * @author Snowolf 
 * @version 1.0 
 * @since 1.0 
 */   
public abstract class ExcelRead {  
  
    /** 
     * Excel 2003 
     */  
    private final static String XLS = "xls";  
    /** 
     * Excel 2007 
     */  
    private final static String XLSX = "xlsx";  
    /** 
     * 分隔符 测试使用
     */  
    private final static String SEPARATOR = "|";  
  
    /** 
     * 由Excel文件的Sheet导出至List 
     *  
     * @param file 
     * @param sheetNum 
     * @return 
     */   
    public static List<String> exportListFromExcel(File file, int sheetNum)  
            throws IOException {  
        return exportListFromExcel(new FileInputStream(file),  
                FilenameUtils.getExtension(file.getName()), sheetNum);  
    }  
  
    /** 
     * 由Excel流的Sheet导出至List 
     *  
     * @param is 
     * @param extensionName 
     * @param sheetNum 
     * @return 
     * @throws IOException 
     */    
    public static List<String> exportListFromExcel(InputStream is,  
            String extensionName, int sheetNum) throws IOException {  
  
        Workbook workbook = null;  
  
        if (extensionName.toLowerCase().equals(XLS)) {  
            workbook = new HSSFWorkbook(is);  
        } else if (extensionName.toLowerCase().equals(XLSX)) {  
            workbook = new XSSFWorkbook(is);  
        }  
  
        return exportListFromExcel(workbook, sheetNum);  
    }  
  
    /** 
     * 由指定的Sheet导出至List 
     *  
     * @param workbook 
     * @param sheetNum 
     * @return 
     * @throws IOException 
     */   
    private static List<String> exportListFromExcel(Workbook workbook,  
            int sheetNum) {  
  
        Sheet sheet = workbook.getSheetAt(sheetNum);  
  
        // 解析公式结果  
        FormulaEvaluator evaluator = workbook.getCreationHelper()  
                .createFormulaEvaluator();  
  
        List<String> list = new ArrayList<String>();  
  
        int minRowIx = sheet.getFirstRowNum();  
        int maxRowIx = sheet.getLastRowNum(); 
      //循环行
        for (int rowIx = minRowIx; rowIx <= maxRowIx; rowIx++) {  
            Row row = sheet.getRow(rowIx);  
            StringBuilder sb = new StringBuilder();  
  
            short minColIx = row.getFirstCellNum();  
            short maxColIx = row.getLastCellNum();  
          //循环单元格
            for (short colIx = minColIx; colIx <= maxColIx; colIx++) {  
            	Object[] objects = new Object[]{maxColIx};
                Cell cell = row.getCell(new Integer(colIx));  
                CellValue cellValue = evaluator.evaluate(cell);  
                if (cellValue == null) {  
                    continue;  
                }  
             // 经过公式解析,最后只存在Boolean、Numeric和String三种数据类型,此外就是Error了  
                // 其余数据类型,根据官方文档,完全可以忽略http://poi.apache.org/spreadsheet/eval.html    
                switch (cellValue.getCellType()) {  
                case Cell.CELL_TYPE_BOOLEAN:  
                    sb.append(SEPARATOR+cellValue.getBooleanValue())  ;
                    break;  
                case Cell.CELL_TYPE_NUMERIC:  
                	// 这里的日期类型会被转换为数字类型,需要判别后区分处理  
                    if (DateUtil.isCellDateFormatted(cell)) {  
                    	sb.append(SEPARATOR + cell.getDateCellValue());  
                    } else {  
                    	sb.append(SEPARATOR + cellValue.getNumberValue()); 
                    }  
                    break;  
                case Cell.CELL_TYPE_STRING:  
                	sb.append(SEPARATOR + cellValue.getStringValue());  
                    break;  
                case Cell.CELL_TYPE_FORMULA:  
                    break;  
                case Cell.CELL_TYPE_BLANK:  
                    break;  
                case Cell.CELL_TYPE_ERROR:  
                    break;  
                default:  
                    break;  
                }  
            }  
            list.add(sb.toString());  
        }  
        return list;  
    }  
}
分享到:
评论

相关推荐

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...

    Java POI EXCEL导入导出

    Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出...

    poi excel导入导出

    本文将深入探讨如何使用Apache POI进行Excel的导入与导出。 一、Apache POI简介 Apache POI 是由Apache软件基金会开发的一个Java库,它允许开发者使用Java读写Microsoft Office格式的文件,如Word(.doc)、Excel...

    poiEXcel导入导出操作架包

    在标题提到的"poiExcel导入导出操作架包"中,Apache POI的核心功能是支持对Excel文件的读取和写入操作,这对于在Java应用程序中进行数据导入和导出非常有用。下面我们将深入探讨Apache POI在Excel导入导出方面的应用...

    POI实现Excel导入导出并附带加载进度条

    总之,这个项目是一个完整的Java解决方案,用于处理Excel文件的导入导出,同时具备用户友好的进度条显示。它利用了Apache POI的强大功能,结合maven的依赖管理,以及可能的GUI组件,提供了高效且直观的数据操作体验...

    Springboot+Poi实现Excel的导入导出

    综上所述,"Springboot+Poi实现Excel的导入导出"是一个实用的功能,它结合了Spring Boot的便捷性、MyBatis的数据库操作以及POI的Excel处理能力,为企业级应用提供了高效的数据交换手段。在实际开发中,还需要根据...

    Java poi 实现excel导入导出

    在提供的“java-excel导入导出”压缩包中,可能包含了示例代码、说明文档以及测试数据,可以帮助初学者快速理解和使用Java POI进行Excel操作。通过学习和实践这些示例,你可以掌握Java POI库的基本用法,并能灵活...

    POI实现excel导入导出

    在本文中,我们将深入探讨如何使用Apache POI库实现Excel的导入和导出功能,这对于处理大量数据和自动化办公流程非常有用。 首先,让我们了解一下Apache POI的核心组件HSSF(Horrible Spreadsheet Format)和XSSF...

    POI数据Excel导入导出jar

    该文件中包含了所有java项目中...将该zip解压后,将jar包加入到自己的项目中,可以直接通过poi的api在excel和项目数据进行导入导出。 应用场景:如 excel格式对账单导出,将数据库数据导出到excel中(带样式字体等)。

    poi操作Excel导入导出(web项目)

    在本文中,我们将深入探讨如何使用Apache POI在Web项目中实现Excel的导入与导出功能。 首先,我们需要理解Apache POI的核心概念。POI提供了HSSF和XSSF两个API,分别用于处理老版本的BIFF格式(.xls)和新版本的...

    springboot+mybatis+poi 实现excel导入导出

    本篇文章将详细介绍如何利用SpringBoot和MyBatis结合Apache POI实现Excel的导入导出功能。 首先,SpringBoot是一个基于Spring框架的轻量级开发工具,它简化了新Spring应用的初始搭建以及开发过程。SpringBoot通过...

    POI EXCEL 导入导出工具设计 SQL2000

    在"POI EXCEL 导入导出工具设计 SQL2000"这个项目中,你将学习到如何利用POI库处理Excel数据,并将这些数据与SQL Server 2000数据库进行交互。 首先,让我们深入了解Apache POI。POI是开源的Java API,由Apache软件...

    JAVA实现数据库数据导入导出到Excel(POI)所需jar包

    在Java开发中,有时我们需要将数据库中的数据导出到Excel文件,或者从Excel文件...通过正确理解和使用POI库,你可以轻松地实现数据的导入导出,提升工作效率。记得在项目中引入正确的jar包,以确保所有功能的正常运行。

    poi Excel导入导出的jar包

    下面我们将详细探讨Apache POI在Excel导入导出中的应用及其相关知识点。 1. **Apache POI概述**: - Apache POI 是Apache软件基金会下的一个项目,它提供了一组API,允许程序员在Java应用程序中创建、修改和显示...

    java poi操作excel批量导入导出项目需要的jar包

    Java中的Apache POI库是处理...以上是Java POI操作Excel的基本概念和关键点,理解并熟练运用这些知识点,你就可以在项目中高效地进行批量导入导出操作了。记住,持续学习和适应新的库版本是保持技术领先的关键。

    java poi Excel导入导出示例

    在这个示例中,我们将深入探讨如何使用Apache POI库进行Excel的导入和导出操作。Apache POI 提供了丰富的API,使得Java程序员可以在不依赖Microsoft Office的情况下读写Excel文件。 首先,让我们了解POI的基本概念...

    POI批量导入导出

    在批量导入导出过程中,POI允许程序创建、修改和保存Excel文件,包括设置工作表、单元格的各种属性。例如,可以创建新的工作簿,添加工作表,设定单元格的值,设置单元格样式,甚至处理公式和图表。这使得Java应用...

Global site tag (gtag.js) - Google Analytics