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

  • 相关阅读:
    mysql性能优化学习笔记(1)优化目的、方向及数据库准备
    php笔试算法题:顺时针打印矩阵坐标蛇形算法
    离职了,一切从头开始
    mysql性能优化学习笔记(2)如何发现有问题的sql
    WTL的使用
    获取程序当前目录的绝对路径
    [读书笔记]《C#本质论》读书笔记
    [.NET]ConcurrentDictionary 线程安全的集合类
    RakNet中文手册
    Python SCons
  • 原文地址:https://www.cnblogs.com/guobin-/p/11185054.html
Copyright © 2020-2023  润新知