apache poi 解析excel

maven 依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.0.0</version>
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.15</version>
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.15</version>
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml-schemas</artifactId>
    <version>3.15</version>
</dependency>

<dependency>
    <groupId>org.apache.xmlbeans</groupId>
    <artifactId>xmlbeans</artifactId>
    <version>2.6.0</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.0.0</version>
</dependency>
package excel;

import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by xiaominzh on 2016/11/14.
 */
public class ExcelExportNew {

    private static String getCellValue(XSSFCell cell,String columnType)throws Exception{
        if("i".equals(columnType)){
            return String.valueOf(cell.getNumericCellValue());
        }

        if("d".equals(columnType)){
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            return sdf.format(cell.getDateCellValue());
        }

        cell.setCellType(CellType.STRING);
        return cell.getRichStringCellValue().toString();

    }

    private static List<String> loadColumnNames(XSSFRow row){
        List<String> array = new ArrayList<String>();
        int maxCellNum = row.getLastCellNum();
        for(int i=0;i<maxCellNum;i++){
            XSSFCell cell = row.getCell(i);
            String name = cell.getStringCellValue();
            array.add(name);
        }
        return array;
    }

    private static List<String> loadColumnTypes(XSSFRow row){
        List<String> array = new ArrayList<String>();
        int maxCellNum = row.getLastCellNum();
        for(int i=0;i<maxCellNum;i++){
            XSSFCell cell = row.getCell(i);
            String name = cell.getStringCellValue();
            array.add(name);
        }
        return array;
    }

    private static void convertExcelToJSON(String fileName,String sheetName)throws Exception {
        InputStream is = ExcelExportNew.class.getResourceAsStream(fileName);
        XSSFWorkbook hssfWorkbook = new XSSFWorkbook(is);
        XSSFSheet sheet = hssfWorkbook.getSheet(sheetName);

        int rows = sheet.getLastRowNum();
        List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();

        List<String> columnTypes = loadColumnTypes(sheet.getRow(0));
        List<String> columnNames = loadColumnNames(sheet.getRow(1));

        for (int i = 3; i <= rows; i++) {
            XSSFRow row = sheet.getRow(i);
            int maxCellNum = row.getLastCellNum();
            Map<String, Object> item = new HashMap<String, Object>();
            for (int cellIndex = 0; cellIndex < maxCellNum; cellIndex++) {

                XSSFCell cell = row.getCell(cellIndex);
                String columnName = columnNames.get(cellIndex);
                String columnType = columnTypes.get(cellIndex);
                String value = null;
                try {
//                    cell.setCellType(CellType.STRING);
                    value = getCellValue(cell,columnType);
                } catch (Exception e) {
                    System.err.println("row:"+i+",column:"+cellIndex);
                    System.err.println(e.getMessage());
                    break;
                }

                item.put(columnName, value);
            }
            result.add(item);
        }
        System.out.println(JSONUtil.getJSONString(result));
    }

    public static void main(String[] args) throws Exception {
        convertExcelToJSON("shop_sale_type_list.xlsx","shop_sale_type_list");
    }
}

测试excel文件

输出

时间: 2024-10-31 20:28:42

apache poi 解析excel的相关文章

Apache POI解析Excel文件

1.导入POI的jar包到BOS项目中 2. 使用POI解析Excel文件

使用apache POI解析Excel文件

1. Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. 2. POI结构 HSSF - 提供读写Microsoft Excel XLS格式档案的功能.XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能.HWPF - 提供读写Microsoft Word DOC格式档案的功能.HSLF - 提供读写Microsoft PowerPoin

框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)

知识点: 批量导入(ocupload插件,pinyin4J /POI解析Excel(apache POI) /区域分页查询 /Combobox下拉框 /分区组合条件分页查询(ajax) /分区数据导出(Excel下载) BOS项目笔记第4天 1.    区域批量导入功能 *Ajax不支持文件上传. *上传并且不刷新上传页面原理: Target到一个0,0,0的隐藏iframe里,造成一个没有刷新的假象 <form target="myIframe" action="ab

使用POI解析Excel时,出现org.xml.sax.SAXParseException: duplicate attribute &#39;o:relid&#39;的解决办法

1.使用org.apache.poi解析excle,.xlsx类型文件InputStream is = new FileInputStream(strFileName);XSSFWorkbook wb = new XSSFWorkbook(is);出现异常如下: org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetExceptionat org.apache.poi.xssf.usermodel.XSSFFactor

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

Poi解析Excel

Poi解析Excel Poi包里有4个主要的类,包括: Workbook------工作表,通过WorkbookFactory的create(FileInputStream fis)方法获取, Sheet------------表格,Workbook实例的getSheetAt(int num)方法获取, Row--------------行,Sheet实例的getRow(int num)方法获取, Cell--------------单元格,Row实例的getCell(int num)方法获取,

(5) 如何用Apache POI操作Excel文件-----发现Apache的POI的Bug后,如何给Apache的POI报Bug?

在我上篇文章中,(4) 如何用Apache POI操作Excel文件-----发现了POI-3.12一个回归,通过测试POI-3.12的版本,我发现了一个bug,那么发现bug后,该如何处理.我们有2种处理方式,首先我们到Apache POI的bug库里面搜索,看别人有没有创建类似的bug,如果有创建的,这个是最好的结果,我们只需要关注这个bug什么时候被修复.如果没有搜索不到,这个时候我们就需要给Apache POI报bug了.那么,如何给Apache报Bug? 第一步: 打开https://

使用Apache POI 读取Excel文件

生活中用到用到Excel文件的情况很多,什么商品进货单,产品维修单,餐厅的营业额等等.作为程序员,我们该如何读取Excel文件,获取我们想要的资源呢.本篇将讲解如何使用Apache POI读取Excel文件. 准备工作: 1)Apache POI 开发jar包 2)Excel资源文件,包括Excel2003,Excel2007这两种版本分别对应xls.xlsx文件. 本篇已经为您做好准备工作,请点击此处,下载资源文件,你也可以浏览Apace POI官网了解更多详细信息. 简要流程: 获取Work

结合项目(Spring+(基于注解的)SpringMVC和Mybatis+uploadify文件上传)--poi解析Excel文件

poi解析Excel文件 1.上传文件至服务器 2.解析Excel文件并返回数据集合 3.将数据保存到服务器 框架======Spring+(基于注解的)SpringMVC和Mybatis===== 第一步: 前台: jsp文件采用的是uploadify <div id="fileQueue"></div> <input type="file" id="brandFile"> js: <script ty