对于一个程序员来说,文件操作是经常遇到的,尤其是对Excel文件的操作。

在这里介绍一下我在项目中用到的一个操作Excel的工具——POI。关于POI的一些概念,网络上很多,详细信息大家可以自行百度,我在这里只做简单介绍。POI是apache的类库,主要是为Java开发人员提供对Office文件(word、ppt、Excel)处理的支持。我这里主要给出几个例子来说明演示一下。

准备工作

我用的版本是3.10.1,需要的jar有:

  • dom4j.jar
  • log4j-1.2.13.jar
  • poi-3.10.1-20140818.jar
  • poi-ooxml-3.10.1-20140818.jar
  • poi-ooxml-schemas-3.10.1-20140818.jar
  • poi-scratchpad-3.10.1-20140818.jar
代码示例1.读取Excel
[java] view plain copy  print?
  1. public void testReadExcel() {
  2. try {
  3. // 读取Excel
  4. Workbook wb = new HSSFWorkbook(new FileInputStream("d:\\2.xls"));
  5. // 获取sheet数目
  6. for (int t = 0; t < wb.getNumberOfSheets(); t++) {
  7. Sheet sheet = wb.getSheetAt(t);
  8. Row row = null;
  9. int lastRowNum = sheet.getLastRowNum();
  10. // 循环读取
  11. for (int i = 0; i <= lastRowNum; i++) {
  12. row = sheet.getRow(i);
  13. if (row != null) {
  14. // 获取每一列的值
  15. for (int j = 0; j < row.getLastCellNum(); j++) {
  16. Cell cell = row.getCell(j);
  17. String value = getCellValue(cell) ;
  18. if(!value.equals("")){
  19. System.out.print(value + " | ");
  20. }
  21. }
  22. System.out.println();
  23. }
  24. }
  25. }
  26. } catch (Exception e) {
  27. e.printStackTrace();
  28. }
  29. }

用到了一个方法:

[java] view plain copy  print?
  1. /***
  2. * 读取单元格的值
  3. *
  4. * @Title: getCellValue
  5. * @Date : 2014-9-11 上午10:52:07
  6. * @param cell
  7. * @return
  8. */
  9. private String getCellValue(Cell cell) {
  10. Object result = "";
  11. if (cell != null) {
  12. switch (cell.getCellType()) {
  13. case Cell.CELL_TYPE_STRING:
  14. result = cell.getStringCellValue();
  15. break;
  16. case Cell.CELL_TYPE_NUMERIC:
  17. result = cell.getNumericCellValue();
  18. break;
  19. case Cell.CELL_TYPE_BOOLEAN:
  20. result = cell.getBooleanCellValue();
  21. break;
  22. case Cell.CELL_TYPE_FORMULA:
  23. result = cell.getCellFormula();
  24. break;
  25. case Cell.CELL_TYPE_ERROR:
  26. result = cell.getErrorCellValue();
  27. break;
  28. case Cell.CELL_TYPE_BLANK:
  29. break;
  30. default:
  31. break;
  32. }
  33. }
  34. return result.toString();
  35. }

解释一下,首先将文件读入到工作簿Workbook中,Workbook是一个接口,他有2个实现:HSSFWorkbook和XSSFWorkbook。前者是用来读取97-03版的Excel,扩展名为xls,后者是读取07及以后的版本,扩展名为xlsx。读入到workbook中,然后循环所有的sheet,在sheet循环所有的有效行和有效列。其中sheet.getLastRowNum()获得最后一行的索引值(从0开始),而sheet.getPhysicalNumberOfRows()则是获取的最后一行的行号(从1开始)。这里要注意的是循环列不是在sheet中循环,而是在row中循环。

效果图如下:
代码示例2. 写入Excel文件
  1. public void testWriteExcel() {
  2. String excelPath = "d:/3.xls";
  3. Workbook workbook = null;
  4. try {
  5. // XSSFWorkbook used for .xslx (>= 2007), HSSWorkbook for 03 .xsl
  6. workbook = new HSSFWorkbook();// XSSFWorkbook();//WorkbookFactory.create(inputStream);
  7. } catch (Exception e) {
  8. System.out.println("创建Excel失败: ");
  9. e.printStackTrace();
  10. }
  11. if (workbook != null) {
  12. Sheet sheet = workbook.createSheet("测试数据");
  13. Row row0 = sheet.createRow(0);
  14. for (int i = 0; i < 6; i++) {
  15. Cell cell = row0.createCell(i, Cell.CELL_TYPE_STRING);
  16. cell.setCellValue("列标题" + i );
  17. //sheet.autoSizeColumn(i);//自动调整宽度
  18. }
  19. for (int rowNum = 1; rowNum < 10; rowNum++) {
  20. Row row = sheet.createRow(rowNum);
  21. for (int i = 0; i < 6; i++) {
  22. Cell cell = row.createCell(i, Cell.CELL_TYPE_STRING);
  23. cell.setCellValue("单元格" + String.valueOf(rowNum + 1)
  24. + String.valueOf(i + 1));
  25. }
  26. }
  27. try {
  28. FileOutputStream outputStream = new FileOutputStream(excelPath);
  29. workbook.write(outputStream);
  30. outputStream.flush();
  31. outputStream.close();
  32. } catch (Exception e) {
  33. System.out .println("写入Excel失败: ");
  34. e.printStackTrace();
  35. }
  36. }
  37. }

效果图如下:

怎么样,很简单吧。只要你使用了poi,不管你有没有安装Office,都可以完美的操作Office文件,小伙伴们,都快来试试看吧。

转载于:https://www.cnblogs.com/hoobey/p/5549918.html

使用poi读写Excel相关推荐

  1. java 读取excel 图片_利用Java+POI 读写Excel文档向Excel中插入图片

    一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...

  2. jxl读写excel, poi读写excel,word, 读取Excel数据到MySQL

    这篇blog是介绍: 1. java中的poi技术读取Excel数据,然后保存到MySQL数据中. 2. jxl读写excel 你也可以在 : java的poi技术读取和导入Excel 了解到写入Ex ...

  3. 使用poi读写excel文件

    使用poi读写excel文件 Posted on 2011 年 03 月 16 日 by 苍之涛 今天一个同学需要处理一个excel文件,于是我便在网上搜了一下方法,顺便自己研究一下.刚刚参考网上资料 ...

  4. java读写excel文件poi_Java利用POI读写Excel文件工具类

    本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下 package com.test.app.utils; import java.io.File; import ...

  5. POI读写Excel演练

    前言 最近, 看了别人的博客, 说一个开发人员写了10年代码, 还不知道怎么去实现一个java处理excel文件的简单操作, WTFK! 我严重怀疑他在说我, 很明显我也不会, 所以你有福了, 和我一 ...

  6. Java 中如何解决 POI 读写 excel 几万行数据时内存溢出的问题?(附源码)

    >>号外:关注"Java精选"公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料.开源项目. 1. Excel2003与Excel2007 两个版本 ...

  7. Apache POI 读写 Excel file (.xls or .xlsx)

    Apache POI 是 Apache 软件基金会的开放源码函式库,POI 提供 API 给 Java 程序对 Microsoft Office 格式档案读和写的功能. 这里演示了 POI 对新版 E ...

  8. java使用Jxl和Poi读写Excel

    使用Jxl和Poi需要使用到的jar包(由于我所在电脑的权限问题,不能直接给),可自行前往下载:jar下载 要用到的jar包(最好是全下了): 1.commons-io-2.2.jar 2.dom4j ...

  9. Java:apache.poi读写Excel文件

    依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</ar ...

  10. POI读写excel简单教程

    POI 简介 百度百科 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 基本功能 HSSF - 提 ...

最新文章

  1. Nodejs--querystring (URL 查询字符串)
  2. 一文盘点深度学习13个常见问题(附详细解答amp;学习资源)
  3. SAP ABAP ADBC和Java JDBC的使用比较
  4. 搜matlab代码的网站,LTE小区搜索matlab仿真
  5. number输入框限制输入数字位数、字体随数字长度变化
  6. phoneGap工程的创建
  7. javascript变量作用域一点总结
  8. Oracle服务的作用
  9. 批处理(bat)中路径名称或者文件名称有空格怎么办?
  10. java实现一个电子书下载系统
  11. android studio 融云,融云 SDK 是否支持 AndroidX
  12. Qt【正则表达式】匹配中文汉字,和字母,过滤中英文符号
  13. java练手代码大全手机版_Java版打字练习游戏源码
  14. 惠普服务器bios修改ilo,HPE Gen10 Plus iLO5 BIOS设置固定IP地址
  15. 阿里面试题-判断是不是一个IP地址的测试用例设计(Python实现)
  16. 苹果XR设备多次“跳票” XR行业的未来将如何
  17. pmw原理c语言,详细解析单片机 PMW 控制基本原理
  18. Node.js 网站内容抓取及Mysql存取Demo
  19. 【VBA】通过VBA实现EXCEL全屏显示
  20. [硬件选型] 工业镜头之参数和选型

热门文章

  1. MySQL安装时Download界面为空,不显示需要下载的组件,MySQL Installer 8.0.28.0 Download界面为空解决方案
  2. 2012r2配置java_JDK+Tomcat 服务器配置+腾讯云Win2012 R2 配置安装
  3. 简单介绍WaitForSingleObject / WaitForMultipleObjects
  4. Java 语言基础(一)
  5. P1830 轰炸III
  6. There is no Action mapped for namespace / and action name accredit.
  7. 《Windows服务器配置与管理》文件系统管理
  8. [C# 基础知识梳理系列]专题四:事件揭秘
  9. 介绍一个基于ASP.NET MVC的框架Catharsis
  10. xirihanlin音乐盒 vol.1