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

时间: 2024-10-28 10:09:20

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

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

非常多人在项目中使用Webservice,仅仅是知道怎样公布Webservice,怎样调用Webservice,但真要论其来龙去脉,还真不一定清楚. 一切一切还要从我们伟大的sun公司规范说起. JAVA 中共同拥有三种WebService 规范,各自是JAXM&SAAJ.JAX-WS(JAX-RPC).JAX-RS. 以下来分别简要的介绍一下这三个规范.针对JDK 1.6以下版本号,新的还没研究过 (1.)JAX-WS: JAX-WS(Java API For XML-WebService),

Java中读取Excel功能实现_POI

这里使用apache的poi进行读取excel 1,新建javaproject 项目:TestExcel 2,导入包 包下载地址:http://poi.apache.org/download.html#POI-3.10-FINAL 百度网盘下载:http://pan.baidu.com/s/1i365mQT 导入根目录下.lib.ooxml-lib下的所有jar 4,操作读取excel import java.io.File; import java.io.IOException; import

JS中字符串的相关操作

(转自:http://www.cnblogs.com/zhaoxinxin/articles/1402733.html) 一.字符串的创建 创建一个字符串有几种方法. 最简单的是用引号将一组字符包含起来,可以将其赋值给一个字符串变量. var myStr = "Hello, String!"; 可以用双引号或单引号将字符串包含,但要注意,作为界定字符串的一对引号必须是相同的,不能混用. 像var myString = "Fluffy is a pretty cat.'; 这样

java 线程 原子类相关操作示例 thinking in java4 目录21.3.4

java 线程  原子类相关操作示例 package org.rui.thread.volatiles; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; /** * 原子类,

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

java 线程  原子类相关操作演示样例 package org.rui.thread.volatiles; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; /** * 原子类

Java中Date各种相关用法

Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=Calendar.getInstance(); time.clear(); time.set(Calendar.YEAR,year); time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0 int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数 注:在使用set方法之前,必须

线程基础:线程(3)——JAVA中的基本线程操作(中)

(接上文<线程基础:线程(2)--JAVA中的基本线程操作(上)>) 1-4.注意synchronized关键字的使用 在前面的文章中我们主要讲解的是线程中"对象锁"的工作原理和操作方式.在讲解synchronized关键字的时候,我们还提到了synchronized关键字可以标注的位置.大家经常看到相当部分的网贴,在它们的代码示例中将synchronized关键字加载到代码的方法体上,然后告诉读者:这个操作是线程安全的.代码可能如下: /** * 这个类的class对象进

java中 mongodb的各种操作

一. 常用查询: 1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is  精确匹配,模糊匹配 使用 regex...) public PageUrl getByUrl(String url) { return findOne(new Query(Criteria.where("url").is(url)),PageUrl.class); } 2. 查询多条数据:linkUrl.id 属于分级查询 public List<PageUrl> getPageU

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

字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果写过C/C++的应该就了解,在字符串的操作上会有许多操作的函数与类,用于简化代码的开发.一方面是因为字符串在代码中会频繁用到,另一方面是因为字符串的操作非常麻烦. 最初我知道String的特殊待遇就是在delphi中,因为String在delphi里是一个关键字存在,与其他的基本类型是不一样的.那时