资讯专栏INFORMATION COLUMN

POI技术—用于java开发解析excel的抽象类

xfee / 2579人阅读

摘要:单元格各类型数据读取基本类型处理的数据包括字符型数据,数字日期公式等。下面是单元格类型说明实例解析中数据,要求转换为文本方式存储写一个解析的抽象类版本的版本的解析的文件格式有误

1.单元格各类型数据读取

1.1 基本类型

处理的Excel数据包括字符型数据,数字、日期、公式等。

下面是单元格类型说明:

2实例
解析excel中数据,要求转换为文本方式存储
2.1 写一个excel解析的抽象类

  public abstract class ExcelParser {
            private String fileName;
            private InputStream inputStream;
        
            private final static String excel2003L = ".xls";//2003- 版本的excel
            private final static String excel2007U = ".xlsx";//2007+ 版本的excel
        
            protected final static DecimalFormat decimalFormat = new DecimalFormat("0");
            protected final static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
        
            protected final static String[] columnStr = new String[]{
                    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
            };
               protected OrderExcelParser(String fileName, InputStream inputStream) {
                this.fileName = fileName;
                this.inputStream = inputStream;
            }
        
            protected Workbook getWorkbook() throws Exception {
                try {
                    String fileType = fileName.substring(fileName.lastIndexOf("."));
                    if (excel2003L.equals(fileType)) {
                        return new HSSFWorkbook(inputStream); //2003-
                    } else if (excel2007U.equals(fileType)) {
                        return new XSSFWorkbook(inputStream); //2007+
                    } else {
                        throw new Exception();
                    }
                } catch (Exception e) {
                    throw new Exception("解析的文件格式有误!");
                }
            }
        
            protected abstract void parseTitles(int rowIndex) throws Exception;
        
            protected String getCellStringValue(Cell cell) throws Exception {
                String cellValue = "";
                if (cell == null) {
                    return cellValue;
                } else if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                    cellValue = cell.getStringCellValue();
                } else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                    if (HSSFDateUtil.isCellDateFormatted(cell)) {
                        double d = cell.getNumericCellValue();
                        Date date = HSSFDateUtil.getJavaDate(d);
                        cellValue = simpleDateFormat.format(date);
                    } else {
                        cellValue = decimalFormat.format((cell.getNumericCellValue()));
                    }
                } else if (cell.getCellType() == Cell.CELL_TYPE_BLANK) {
                    cellValue = "";
                } else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
                    cellValue = String.valueOf(cell.getBooleanCellValue());
                } else if (cell.getCellType() == Cell.CELL_TYPE_ERROR) {
                    cellValue = "";
                } else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
                    cellValue = cell.getCellFormula();
                }
               
                return cellValue.trim();
            }
        }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67051.html

相关文章

  • 慕课网_《解密JAVA实现Excel导入导出》学习总结

    时间:2017年07月06日星期四说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:无学习源码:https://github.com/zccodere/s... 第一章:课程介绍 1-1 预备知识 基础知识 struts2框架(上传下载功能) xml解析技术(导入模板) JQuery EasyUI(前台美观) 课程目录 实现方式 定制导入模版 导入文件 导...

    enrecul101 评论0 收藏0
  • Java 总结

    摘要:中的详解必修个多线程问题总结个多线程问题总结有哪些源代码看了后让你收获很多,代码思维和能力有较大的提升有哪些源代码看了后让你收获很多,代码思维和能力有较大的提升开源的运行原理从虚拟机工作流程看运行原理。 自己实现集合框架 (三): 单链表的实现 自己实现集合框架 (三): 单链表的实现 基于 POI 封装 ExcelUtil 精简的 Excel 导入导出 由于 poi 本身只是针对于 ...

    caspar 评论0 收藏0
  • Excel大批量数据导入和导出,如何做优化?

    摘要:并且在对的抽象中,每一行,每一个单元格都是一个对象。对支持使用官方例子需要继承,覆盖方法,每读取到一个单元格的数据则会回调次方法。概要Java对Excel的操作一般都是用POI,但是数据量大的话可能会导致频繁的FGC或OOM,这篇文章跟大家说下如果避免踩POI的坑,以及分别对于xls和xlsx文件怎么优化大批量数据的导入和导出。一次线上问题这是一次线上的问题,因为一个大数据量的Excel导出...

    Tecode 评论0 收藏0
  • POI Sax 事件驱动解析Excel2007文件(较大数据量读存导出)

    摘要:方式解析全称,它是一个接口,也是一个软件包。另外,推模型可用于广播环境,能够同时注册多个,并行接收事件,而不是在一个管道中一个接一个地进行处理。这些语法分析器是最灵活的,因为它们还支持。 xcel2007版本的代码如下,本文主要是用于POI解析大文件Excel容易出现内存溢出的现象而提出解决方案,故此解决了大数据量的Excel文件解析的难度,在此拿出来贡献给大家,谢谢! 1.Offic...

    cod7ce 评论0 收藏0
  • 简单好用-JAVA使用POI解析Excel

    摘要:相信使用的目前已经非常多了,我这边提供一个非常简单便利又通用的解析工具类,代码最后有示例代码。可以按照本文直接使用。 相信使用POI的目前已经非常多了,我这边提供一个非常简单便利又通用的POI解析工具类,代码最后有示例代码。可以按照本文直接使用。 import java.io.FileInputStream; import java.io.FileNotFoundException; ...

    wangjuntytl 评论0 收藏0

发表评论

0条评论

xfee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<