一、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. WPF DataGird 类似Excel筛选效果 未成品

    这个本是针对MSDN上所写的代码,不过写一半不想写了. 不想浪费代码,是个半成品的半成品. 效果图: 思路: 利用PopUp来做显示层. 显示层中的数据则是绑定到Datagrid的数据. popup中 ...

  2. 【CF285E】Positions in Permutations(动态规划,容斥)

    [CF285E]Positions in Permutations(动态规划,容斥) 题面 CF 洛谷 题解 首先发现恰好很不好算,所以转成至少,这样子只需要确定完一部分数之后剩下随意补. 然后套一个 ...

  3. Mybatis系列(一)— 处理冲突字符

    在Mybatis的配置文件中编写SQL经常会遇到字符冲突问题 where或者having中使用"<"过滤,Mybatis xml解析器将其当做配置的开始标签处理: " ...

  4. SVN客户端安装

    1.安装客户端 双击运行: 点击[next] 点击[next] 选择好路径后,点击[next] 点击[install]安装 点击[finish]完成安装.安装完成后重启计算机. 2.客户端访问SVN服 ...

  5. RFID相关知识总结(超高频UHF)

    RFID标签分类 1.LF(Low frequency) 低频 频段范围: 125 KHz-135KHz(ISO18000-2) 常见应用:该频段特点是具有良好的物体穿透能力.广泛应用于进出管理.门禁 ...

  6. python 排序 桶排序

    算法思想: 桶排序将数组分到有限数量的桶里.然后每个桶里再分别排序(使用任何算法) 当要倍排序的数组内的数值时均匀分配的时候,桶排序使用线性时间O(n) 步骤: 根据最大值.最小值.桶内数据范围设定一 ...

  7. es6的let与const

    es6新增命令let,用于声明变量,他与var的不同主要有三点: let有块级作用域 let没有变量提升 同级作用域内,let不可以重复定义 let有块级作用域: es5 for(var i=0;i& ...

  8. iOS/Xcode异常:no visible @interface for XXX declares the selector YYY

    在iOS/Xcode开发过程中,出现如下异常信息: no visible @interface for XXX declares the selector YYY 分析原因: There are lo ...

  9. QQ空间自动点赞js脚本

    这是很久前写的脚本了,在浏览器打开QQ空间,并在控制台输入代码就可 时间间隔最好开大点,不然容易被暂时冻结账号 function autoLike() { var list=document.getE ...

  10. 高并发&高可用系统的常见应对策略

    解耦神器:MQ MQ是分布式架构中的解耦神器,应用非常普遍.有些分布式事务也是利用MQ来做的.由于其高吞吐量,在一些业务比较复杂的情况,可以先做基本的数据验证,然后将数据放入MQ,由消费者异步去处理后 ...