poi简介与简单使用

2022-08-07 09:48:53

简介:

POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“简洁版的模糊实现”。
所以POI的主要功能是可以用Java操作Microsoft Office的相关文件,但是一般我们都是用来操作Excel相关文件。

使用前提 :

所需jar包,在pom中添加如下坐标即可

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
</dependency>

注意:

操作Excel文件区分版本:
2003版本(包含2003)以前的扩展名为.xls需要用HSSFWorkbook类操作
2007版本(包含2007)以后的扩展名为.xlsx需要用XSSFWorkbook类操作

导出

2007版本(包含2007)以后的扩展名为.xlsx需要用XSSFWorkbook类操作

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * Created by Administrator on 2019\3\9 0009.
 */
public class PoiTest {

    public static void main(String[] args) throws IOException {


        //创建工作簿 类似于创建Excel文件
        XSSFWorkbook workbook=new XSSFWorkbook();
         //创建 sheetname页名
        XSSFSheet sheet = workbook.createSheet("员工信息");
        sheet.setColumnWidth(3,20*256);//给第3列设置为20个字的宽度
        sheet.setColumnWidth(4,20*256);//给第4列设置为20个字的宽度
            //创建一行,下标从0开始
        XSSFRow row = sheet.createRow(0);
        //创建这行中的列,下标从0开始 (表头)
        XSSFCell cell = row.createCell(0);
         // 给cell 0下表赋值
        cell.setCellValue("姓名");
         //创建这行中的列,并给该列直接赋值
        row.createCell(1).setCellValue("年龄");
        row.createCell(2).setCellValue("性别");
        row.createCell(3).setCellValue("生日");
        row.createCell(4).setCellValue("手机号");
        // 设置表里内容
        row = sheet.createRow(1);
        row.createCell(0).setCellValue("T");
        row.createCell(1).setCellValue("保密");
        row.createCell(2).setCellValue("男");
        row.createCell(3).setCellValue("保密");
        row.createCell(4).setCellValue("12121212121");

        row = sheet.createRow(2);
        row.createCell(0).setCellValue("T");
        row.createCell(1).setCellValue("18");
        row.createCell(2).setCellValue("女");
        row.createCell(3).setCellValue("2000-01-01");
        row.createCell(4).setCellValue("12121212122");
        //设定 路径
        File file = new File("C:\\Users\\Administrator\\Desktop\\员工信息.xlsx");
        FileOutputStream stream = new FileOutputStream(file);
        // 需要抛异常
        workbook.write(stream);
         //关流
        stream.close();
    }


}

设置单元格的宽度

sheet.setColumnWidth(x,20*256);//x=给第几列设置为20个字的宽度

没有错误 就成功了
在这里插入图片描述
现在已经导出了

在这里插入图片描述
2003版本(包含2003)以前的扩展名为.xls需要用HSSFWorkbook类操作
和 07基本相似 就是把XSSFWorkbook换成HSSFWorkbook
后缀名改成 点xls

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * Created by Administrator on 2019\3\9 0009.
 */
public class PoiTest {

    public static void main(String[] args) throws IOException {


        //创建工作簿 类似于创建Excel文件
        HSSFWorkbook workbook=new HSSFWorkbook();
         //创建 sheetname页名
        HSSFSheet sheet = workbook.createSheet("员工信息");
            //创建一行,下标从0开始
        HSSFRow row = sheet.createRow(0);
        //创建这行中的列,下标从0开始 (表头)
        HSSFCell cell = row.createCell(0);
         // 给cell 0下表赋值
        cell.setCellValue("姓名");
         //创建这行中的列,并给该列直接赋值
        row.createCell(1).setCellValue("年龄");
        row.createCell(2).setCellValue("性别");
        row.createCell(3).setCellValue("生日");
        row.createCell(4).setCellValue("手机号");
        // 设置表里内容
        row = sheet.createRow(1);
        row.createCell(0).setCellValue("T");
        row.createCell(1).setCellValue("保密");
        row.createCell(2).setCellValue("男");
        row.createCell(3).setCellValue("保密");
        row.createCell(4).setCellValue("12121212121");

        row = sheet.createRow(2);
        row.createCell(0).setCellValue("T");
        row.createCell(1).setCellValue("18");
        row.createCell(2).setCellValue("女");
        row.createCell(3).setCellValue("2000-01-01");
        row.createCell(4).setCellValue("12121212122");
        //设定 路径
        File file = new File("C:\\Users\\Administrator\\Desktop\\员工信息.xls");
        FileOutputStream stream = new FileOutputStream(file);
        // 需要抛异常
        workbook.write(stream);
         //关流
        stream.close();
    }


}

导入

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

/**
     * Created by Administrator on 2019\3\9 0009.
     */
    public class PoiTest {

        public static void main(String[] args) throws IOException {

          import07();
        }

        public  static void import07() throws IOException {
            File file = new File("C:\\Users\\Administrator\\Desktop\\员工信息.xlsx");
            //获得该文件的输入流
            FileInputStream stream = new FileInputStream(file);
            // 多态  抛异常
            Workbook sheets = new XSSFWorkbook(stream);
            //获取一个工作表(sheet页),下标从0开始
            Sheet sheet = sheets.getSheetAt(0);
            for (int i = 1; i<=sheet.getLastRowNum() ; i++) {
                

            // 获取行数
            Row row = sheet.getRow(i);
            // 获取单元格 取值
            String value1 = row.getCell(0).getStringCellValue();
            String value2 = row.getCell(1).getStringCellValue();
            String value3 = row.getCell(2).getStringCellValue();
            String value4 = row.getCell(3).getStringCellValue();
            String value5= row.getCell(4).getStringCellValue();

                System.out.println(value1);
                System.out.println(value2);
                System.out.println(value3);
                System.out.println(value4);
                System.out.println(value5);
            }


            //关流
            sheets.close();
          stream.close();
        }

    }

以导入
在这里插入图片描述
03版本与上面同理;

  • 作者:  T
  • 原文链接:https://blog.csdn.net/weixin_44520739/article/details/88368779
    更新时间:2022-08-07 09:48:53