一、Apache POI
  1、简介:
    Apache POI支持大多数中小规模的应用程序开发,提供API给Java程序对Microsoft Office格式档案读和写的功能,呈现和文本提取是它的主要特点。
  2、结构: 
    HSSF:
      提供读写Microsoft Excel XLS格式档案的功能。
    XSSF:
      提供读写Microsoft Excel OOXML XLSX格式档案的功能。
    HWPF:
      提供读写Microsoft Word DOC格式档案的功能。
    HSLF:
      提供读写Microsoft PowerPoint PPT格式档案的功能。
    HDGF:
      提供读Microsoft Visio格式档案的功能。
    HPBF:
      提供读Microsoft Publisher格式档案的功能。
    HSMF:
      提供读Microsoft Outlook格式档案的功能。
二、环境配置
  1、java环境搭建
    (1)、安装:
      下载java并进行安装(详细步骤略)
      
    (2)、环境变量配置:
      控制面板-》系统和安全-》系统-》高级系统设置-》环境变量:

      配置变量如下:

      JAVA_HOME:
        jdk存放路径。
        

      CLASSPATH:

        

      PATH:

        向后添加一行:

        

    (3)、配置完成

  2、在eclipse中导入POI包:

    (1)、下载POI:

      POI下载地址:http://poi.apache.org/download.html

      文件目录结构:

      

    (2)、导入POI:

      将所需jar包放入lib中:

      Build Path-》Configure Build Path...

      

      

三、示例代码:

  1、创建新的工作簿:

package com.gb.test;
import java.io.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class create
{
public static void main(String[] args) throws Exception
{
//新建工作簿
XSSFWorkbook newExcel = new
XSSFWorkbook();
//新建流
FileOutputStream out = new FileOutputStream(new File("newExcel.xlsx"));//写入
newExcel.write(out);
out.close();
System.out.println("创建成功");
}
}

  运行截图:

  

  

  此时新建的工作簿是空的,无法打开,需要新建电子表。

  2、新建电子表

package com.gb.test;
import java.io.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class create
{
public static void main(String[] args) throws Exception
{
//新建工作簿
XSSFWorkbook newExcel = new XSSFWorkbook();
//新建流
FileOutputStream out = new FileOutputStream(new File("newExcel.xlsx"));
//新建电子表
Sheet sheet = newExcel.createSheet("sheet1");
//写入
newExcel.write(out);
out.close();
System.out.println("电子表创建成功");
}
}

  运行截图:

  

  

  3、新建行

package com.gb.test;
import java.io.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class create
{
public static void main(String[] args) throws Exception
{
//新建工作簿
XSSFWorkbook newExcel = new XSSFWorkbook();
//新建流
FileOutputStream out = new FileOutputStream(new File("newExcel.xlsx"));
//新建电子表
Sheet sheet = newExcel.createSheet("sheet1");
//新建行
Row row = sheet.createRow(0);
//第1个单元格赋值为"test"
row.createCell(0).setCellValue("test"
);
//写入
newExcel.write(out);
out.close();
System.out.println("数据添加成功");
}
}

  运行截图:

  

  

  创建单元格:

Cell cell = row.createCell(0);

  4、文件内容读取

package com.gb.test;
import java.io.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class read
{
public static void main(String[] args) throws Exception
{
//新建流
FileInputStream in = new FileInputStream(new File("newExcel.xlsx"));
//工作簿
XSSFWorkbook newExcel = new XSSFWorkbook(in);
//新建电子表
Sheet sheet = newExcel.getSheetAt(0);
//新建行
Row row = sheet.getRow(0);
String test=row.getCell(0).toString();
in.close();
System.out.println("数据读取成功");
System.out.println(test);
}
}

  运行截图:

  

  5、修改单元格样式

package com.gb.test;
import java.io.*; import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
public class style
{
public static void main(String[] args) throws Exception
{
//新建流
FileInputStream in = new FileInputStream(new File("newExcel.xlsx"));
//工作簿
XSSFWorkbook newExcel = new XSSFWorkbook(in);
//获取第一个电子表
Sheet sheet = newExcel.getSheetAt(0);
//获取第一行
Row row = sheet.getRow(0);
//获取第一个单元格
Cell cell=row.getCell(0);
//新建样式
XSSFFont font=newExcel.createFont();
//设置字体
font.setFontName("宋体");
//设置字体大小
font.setFontHeightInPoints((short) 16);
//粗体显示
//设置单元格样式
XSSFCellStyle style = newExcel.createCellStyle();
style.setFont(font);
cell.setCellStyle(style);
//新建流
FileOutputStream out = new FileOutputStream(new File("newExcel.xlsx"));
//写入
newExcel.write(out);
out.close();
System.out.println("样式设置成功");
}
}

  运行截图:

  

  

  文字方向:

style.setRotation((short) 90);

  

  从左向右为x轴,逆时针旋转的度数则为文字旋转度数。

四、可能出现的错误:

  1、java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap这一类的错误。

    

  错误原因:

    缺乏需要的jar包,必要的jar没有导全。

POI开发:Java中的Excel相关操作的更多相关文章

  1. Java中Date各种相关用法

    Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=Calendar.getInstance(); time.clear(); time.set ...

  2. java 线程 原子类相关操作演示样例 thinking in java4 文件夹21.3.4

    java 线程  原子类相关操作演示样例 package org.rui.thread.volatiles; import java.util.Timer; import java.util.Time ...

  3. JAVA中的集合容器操作类

    目录 JAVA中的集合容器操作类 List集合 ArrayList的操作方法说明 LinkedList Stack Set Map Queue 总结 JAVA中的集合容器操作类 Java容器类库总共分 ...

  4. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  5. java导入导出excel常用操作小结及简单示例

    POI中常用设置EXCEL的操作小结: 操作excel如下 HSSFWorkbook wb = new HSSFWorkbook();  //创建一个webbook,对应一个Excel文件 HSSFS ...

  6. 你真的了解JAVA中与Webservice相关的规范和实现吗?

    非常多人在项目中使用Webservice,仅仅是知道怎样公布Webservice,怎样调用Webservice,但真要论其来龙去脉,还真不一定清楚. 一切一切还要从我们伟大的sun公司规范说起. JA ...

  7. [转]java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  8. Java中Properties类的操作

    知识学而不用,就等于没用,到真正用到的时候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用Java来写,外加 ...

  9. Java中Properties类的操作配置文件

    知识学而不用,就等于没用,到真正用到的时 候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用 Java来写, ...

随机推荐

  1. GitBook基本使用

    1.安装 Node.js:https://nodejs.org/en/ 2.安装 GitBook: npm install gitbook-cli -g gitbook -V  #查看gitbook是 ...

  2. gitbub高效查找优秀项目

    in:name example   名字中带有example的项目 in:readme example 在readme文件带有example的项目 in:description example 描述里 ...

  3. 通过SharpZipLib实现文件夹压缩以及解压

    代码说明 基于SharpZipLib实现Zip压缩解压,扩展实现文件夹级别压缩解压: 项目源码:MasterChief.DotNet.Infrastructure.Zip Install-Packag ...

  4. 使用order by和group by的分析

    mysql 写sql的顺序:         select -> from-> where->group by->having->order by.  但mysql的解析 ...

  5. Delphi - Logs记录,函数实现MsgDsp

    Logs记录-函数实现MsgDsp 大多数时候,我们不太希望消息以交互的形式出现,这个时候我们可以在窗体上放置一个Memo,然后单独开一个线程进行监视,从而实现把消息实时的显示出来,便于开发者分析. ...

  6. 完美转发(perfect forwarding)、universal reference、引用折叠(collasping)

    首先要分清: C++里的值只有两种值:左值.右值.—— 其本质应该是内存中存储的值/instance分两种:一种是持久的,一种是“短暂的” 也只有两种引用: 左值引用.右值引用. ——引用,就是这个内 ...

  7. 通过Nginx获取用户真实IP

    nginx配置 location / { proxy_set_header Host $host; proxy_set_header X-real-ip $remote_addr; proxy_set ...

  8. NioCopy文件

    步骤: 1.创建输入输出流  fis fos 2.创建通道  fis.getchannel()  fos.getchannel(); 3.创建缓存区      ByteBuffer buffer = ...

  9. django rest_framework vue 实现用户列表分页

    django rest_framework vue 实现用户列表分页 后端 配置urls # 导入view from api.appview.userListView import userListV ...

  10. Nginx 核心配置-可优化配置参数

    Nginx 核心配置-可优化配置参数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.nginx的官网查看指令帮助信息方法 1>.打开nginx的官网(https://ng ...