POI开发:Java中的Excel相关操作

一、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没有导全。

原文地址:https://www.cnblogs.com/guobin-/p/11185054.html