一、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. 【模板】KD-tree

    核心思想: 将空间内的点进行合理划分,以支持有关高维点的操作. 其实就是将线段树搬到了二维及更高维度上. 注意$KD-tree$虽然很像线段树,但其实是一棵二叉搜索树,空间复杂度是$O(n)$的. 查 ...

  2. kvm虚拟机的克隆

    kvm虚拟机的克隆分为两种情况 (1) KVM主机本机虚拟机直接克隆. (2) 通过复制配置文件与磁盘文件的虚拟机复制克隆(适用于异机的静态迁移). 1.  本机虚拟机直接克隆 (1) 查看虚拟机配置 ...

  3. 【Python3爬虫】最新的12306爬虫

    一.写在前面 我在以前写过一次12306网站的爬虫,当时实现了模拟登录和查询车票,但是感觉还不太够,所以对之前的代码加以修改,还实现了一个订购车票的功能. 二.主要思路 在使用Selenium做模拟登 ...

  4. C# Moq

    Moq 1 My Cases 1.1 简单入门 2 Reference 2.1 Methods 2.2 Matching Arguments 2.3 Properties 2.4 Events 2.5 ...

  5. delegate里的Invoke和BeginInvoke

    Invoke和BeginInvoke都是调用委托实体的方法,前者是同步调用,即它运行在主线程上,当Invode处理时间长时,会出现阻塞的情况,而BeginInvod是异步操作,它会从新开启一个线程,所 ...

  6. 2 java并行基础

    我们认真研究如何才能构建一个正确.健壮并且高效的并行系统. 进程与线程 进程(Process):是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础 ...

  7. 遇到了Microsoft Visual Studio is Busy!

    最近两天,我点击F5进入调试模式,VS左下角状态显示一直在加载符号文件,然后加载的超级慢,不多一会儿,显示VS正忙!如上图所示. 然后的然后,VS就卡死了~~~.之后,在网上查找原因和解决办法,找来找 ...

  8. 中国工业的下一个十年在哪里?APS系统或将引领智能化转型

    为什么众多的ERP软件公司没有推出相关产品,当然可以肯定的是并非客户没有此观念,如果一定要说,也只能说目前的需求还不是非常强烈,从ERP厂商非常急切的与APS公司合作,甚至有高价购买APS公司代码的情 ...

  9. while(n)什么意思?

    1.n是bool型变量时,就是代表n为true时运行循环(bool表示布尔型变量,也就是逻辑型变量的定义符,以英国数学家.布尔代数的奠基人乔治·布尔(George Boole)命名. bool类似于f ...

  10. SpingMVC流程图

    Struts的请求流程 springmvc的流程 0.struts2       MVC框架  Controller  Hibernate     持久化框架   Model  spring      ...