Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。

我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。

先上简单的测试代码:

package com.xing.studyTest.poi;import java.io.FileInputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.List;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.ss.usermodel.WorkbookFactory;import lombok.extern.slf4j.Slf4j;/** *  学习POI处理Excel * @author xinghua * */@Slf4jpublic class POIStudy {  public static void main(String[] args) {    String fileName = "/Users/xinghua/Downloads/indicators.xlsx";    try {      InputStream inputStream = new FileInputStream(fileName);          Workbook workbook = WorkbookFactory.create(inputStream);      Sheet sheet = workbook.getSheetAt(0);//获取sheet页面      int begin = sheet.getFirstRowNum();      int end = sheet.getLastRowNum();      log.info("sheet页名称为:"+sheet.getSheetName()+"| 最后一行为:"+begin+"-"+end);      Row firstRow = sheet.getRow(sheet.getFirstRowNum());//第一行标题      Row towRow = sheet.getRow(sheet.getFirstRowNum()+1);//第二行字段        List titleList = new ArrayList<>();        List fieldList = new ArrayList<>();        for (int i = 0; i          titleList.add(firstRow.getCell(i).getStringCellValue());          fieldList.add(towRow.getCell(i).getStringCellValue());        }        log.info("2.获取字段列表ok | 字段个数:"+fieldList.size()+"个。");        log.info(fieldList.toString());    } catch (Exception e) {      e.printStackTrace();    }          }  }

可以看到控制台输出了所有的信息,和下列Excel文件中一致:

Workbook

Workbook 是一个接口,表示Excel工作簿,它也是创建新工作表等的顶层对象。

子类有:

HSSFWorkbook 工作簿 HSSF:MS-Excel 97-2003(.xls),基于BIFF8格式的JAVA接口。

XSSFWorkbook SpreadsheetML工作簿 XSSF:MS-Excel 2007+(.xlsx),基于OOXML格式的JAVA接口。

SXSSFWorkbook 写入非常大的文件时用它 子类 SXSSFWorkbookWithCustomZipEntrySource

HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。

用HSSFSheet、HSSFCell等各种对象来代表 页、行、单元格、字体等等。

我大致查看了Workbook的函数,功能很多,不一一尝试了,用的时候直接在下面找就好:

Workbook 中的函数int getActiveSheetIndex(); //获取活动工作表void setActiveSheet(int sheetIndex);//设置活动工作表int getFirstVisibleTab(); //获取excel中选项卡列表中显示的第一个选项卡void setFirstVisibleTab(int sheetIndex);//设置在excel的选项卡列表中显示的第一个选项卡。void setSheetOrder(String sheetname, int pos); //设置给定工作表的外观顺序。void setSelectedTab(int index); //设置打开工作表时实际看到其数据的选项卡。void setSheetName(int sheet, String name); //设置工作表名称。String getSheetName(int sheet); //获取工作表名称int getSheetIndex(String name); //按姓名返回工作表的索引int getSheetIndex(Sheet sheet); //返回给定工作表的索引Sheet createSheet(); //为此工作簿创建一个工作表,将其添加到工作表中并返回高层代表。用它来创建新的工作表。Sheet createSheet(String sheetname); //为此工作簿创建新工作表,并返回高级表示。用它来创建新的工作表。Sheet cloneSheet(int sheetNum); //从工作簿中的现有工作表创建一个工作表。IteratorsheetIterator(); //按工作表顺序返回工作簿中工作表的迭代器。包括隐藏的和非常隐藏的表。int getNumberOfSheets(); //获取工作簿中电子表格的数量Sheet getSheetAt(int index); //获取给定索引处的工作表对象。Sheet getSheet(String name); //获取具有给定名称的工作表void removeSheetAt(int index); //移除给定索引处的工作表Font createFont(); //创建新字体并将其添加到工作簿的字体表中Font findFont(boolean bold, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline); //查找与提供的属性相匹配的字体int getNumberOfFontsAsInt(); //获取字体表中的字体数量Font getFontAt(int idx); //获取给定索引号处的字体CellStyle createCellStyle(); //创建新的单元格样式,并将其添加到工作簿的样式表中int getNumCellStyles(); //获取工作簿包含的样式数量CellStyle getCellStyleAt(int idx); //获取给定索引处的单元格样式对象void write(OutputStream stream) throws IOException; //将此工作簿写出到输出流中。void close() throws IOException; //关闭从中读取工作簿的基础输入资源(文件或流)。一旦调用了这个函数,就不要再调用了。应该对工作簿执行操作、更新或读取。int getNumberOfNames(); //返回此工作簿中已定义名称的总数Name getName(String name); //具有指定名称的已定义名称。如果未找到,则为null。List extends Name> getNames(String name); //返回具有给定名称的所有已定义名称。List extends Name> getAllNames(); //返回已定义名称的列表。如果没有找到,则返回空列表。Name createName(); //在此工作簿中创建新的(未初始化的)定义名称void removeName(Name name); //删除已定义的名称int linkExternalWorkbook(String name, Workbook workbook);  //添加允许引用指定外部工作簿的公式添加到此工作簿所需的链接。如"[我的工作簿]工作表3!$ a5”要添加到文件中,必须先记录一些链接信息。给定的外部工作簿链接后,就可以添加使用它的公式。每个工作簿只需要链接一次。这种链接仅适用于编写公式。void setPrintArea(int sheetIndex, String reference); //为提供的工作表设置打印区域void setPrintArea(int sheetIndex, int startColumn, int endColumn, int startRow, int endRow); //为了方便Java程序员维护指针。String getPrintArea(int sheetIndex); //检索指定工作表的打印区域的引用,即使没有指定,工作表名称也会附加到引用中。如果没有定义打印区域,则返回空字符串void removePrintArea(int sheetIndex); //删除指定工作表的打印区域MissingCellPolicy getMissingCellPolicy(); //检索当前策略,该策略规定当从行中获取缺失或空白单元格时应做什么。默认值是返回空白和空单元格。void setMissingCellPolicy(MissingCellPolicy missingCellPolicy); //设置从行中获取缺失或空白单元格时的处理策略DataFormat createDataFormat(); //返回此工作簿的数据格式实例。int addPicture(byte[] pictureData, int format); //向工作簿添加图片。List extends PictureData> getAllPictures(); //从工作簿中获取所有图片CreationHelper getCreationHelper(); //返回一个对象,该对象处理HSSF和XSF所需的各种实例的具体类的实例化。boolean isHidden(); //如果此工作簿在图形用户界面中不可见,则返回falsevoid setHidden(boolean hiddenFlag); //设置是否隐藏 boolean isSheetHidden(int sheetIx); //检查工作表是否隐藏。boolean isSheetVeryHidden(int sheetIx); //检查Sheet是否非常隐蔽。void setSheetHidden(int sheetIx, boolean hidden); //隐藏或取消隐藏工作表。SheetVisibility getSheetVisibility(int sheetIx); //获取此工作簿中工作表的可见性(可见、隐藏、非常隐藏)void setSheetVisibility(int sheetIx, SheetVisibility visibility);  //隐藏或取消隐藏工作表。请注意,当前设置为活动工作表的工作表(新创建的工作簿中的工作表0或通过setActiveSheet()设置的工作表)不能隐藏。void addToolPack(UDFFinder toopack); //在此工作簿中注册新的工具包。void setForceFormulaRecalculation(boolean value); //打开工作簿时,应用程序是否应执行完全重新计算。boolean getForceFormulaRecalculation(); //打开工作簿时是否要求Excel重新计算所有公式。SpreadsheetVersion getSpreadsheetVersion(); //返回此工作簿的电子表格版本int addOlePackage(byte[] oleData, String label, String fileName, String command) throws IOException; //将具有给定内容的OLE包管理器对象添加到工作表中

女神镇楼

End

java 读取excel_Java12POI操作Excel相关推荐

  1. java操作office和pdf文件java读取word,excel和pdf文档内容

    在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...

  2. Java 使用 POI 操作 Excel

    Apache POI 基本介绍 Apache POI 是 Apache 软件基金会提供的 100% 开源库.支持 Excel 库的所有基本功能. 图片来源:易百教程 基本概念 在 POI 中,Work ...

  3. execle java,Java使用POI操作Excel

    Java使用POI操作Excel 1. POI操作Excel 1.1. 依赖 org.apache.poi poi 4.1.0 org.apache.poi poi-ooxml 4.1.0 org.a ...

  4. java使用poi操作excel删除一整行

    java使用poi操作excel删除一整行 需求1:删除excel表格第4行 代码示例: sheet.shiftRows(4, sheet.getLastRowNum(),-1); 第一个参数为行数( ...

  5. Java 使用 POI 操作 Excel(反射,大数据量)

    Apache POI 基本介绍 Apache POI 是 Apache 软件基金会提供的 100% 开源库.支持 Excel 库的所有基本功能. 图片来源:易百教程 基本概念 在 POI 中,Work ...

  6. JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls)

    JAVA使用POI操作Excel表,XSSF(xlsx)和HSSF(xls) *** POI的结构: ---*HSSF - 提供读写Microsoft Excel格式档案的功能. ---*XSSF - ...

  7. Python读取和操作Excel(.xlsx)文件

    Python读取和操作Excel(.xlsx)文件 使用openpyxl库来控制excel文件(即.xlsx为后缀的文件).这里介绍一下excel数据的结构. 打开excel文件后生成一个workbo ...

  8. Java读取和解析Excel数据:基于Apache POI(二)

    Java读取和解析Excel数据:基于Apache POI(二) 假设附录1文章中的test.xls是对员工的考勤记录表.需要根据这张excel表统计员工的加班时间,那么需要重点关注第五列的下班时候的 ...

  9. Java使用poi操作excel注意事项

    Java使用poi操作excel注意事项 1.如果只需要获取sheet信息,用流模式打开文件即可获取,消耗内存少 2.上传的文件需要校验,防止Excel包含异常的缓存文件,缓存文件可能会有几百兆,会瞬 ...

最新文章

  1. Neural-RGBD: 从单目视频序列中估计深度及其不确定度
  2. IAR编译器的常见问题
  3. 并发模型与IO模型梳理
  4. java linkedlist和arraylist添加元素时性能比较
  5. Java并发编程的艺术,解读并发编程的优缺点
  6. 【CodeForces - 1041D】Glider (枚举起点,双指针 或 二分终点,思维)(知识点总结)
  7. 关于java.lang.ClassNotFoundException: org.git.mm.mysql.Driver的解决办法
  8. jQuery 项目 兼容IE ,缓存问题,等总结
  9. .animate css,animate-css
  10. 逻辑回归与线性回归是什么关系呢?
  11. HTML中怎么适应所有浏览器,css如何自适应浏览器高度?
  12. GD32F103串口DMA收发(空闲中断 + DMA)
  13. Address Sanitizer(Asan)原理及相关GCC选项列表
  14. ui设计现状与意义_UI设计存在的意义
  15. 【数据字典】第三篇 利用PowDesigner自动生成数据字典
  16. perl生成图片_使用Perl生成模拟数据
  17. 41 位全球顶尖 AI 专家共论人工智能创新实践,CCAI 2017 全日程公布!
  18. java实现家庭关系图_左孩子右兄弟二叉树实现家族家谱
  19. EBS INV:客户料号
  20. qcc514x-qcc304x调试笔记-如何区分左右耳

热门文章

  1. python 3元运算符
  2. pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件。
  3. Notepad++支持jQuery、html5、css3
  4. 使用Struts2标签遍历集合
  5. CakePHP中出现persistent is not writable等Warning的解决方法
  6. [置顶] 面向业务开发应用
  7. 计算机函数模式的用处是啥,请问怎么理解计算机中的函数?
  8. Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)
  9. ORB_SLAM2代码阅读(3)——LocalMapping线程
  10. mysql connector python linux_MySQL Connector/Python 安装、测试