(二)JAVA使用POI操作excel

本文详细介绍了使用Java进行Excel操作的方法,包括创建时间格式单元格、处理不同格式内容、遍历读取单元格数据及文本提取技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接:https://www.cnblogs.com/wishwzp/p/5494038.html
出现版本错误,链接:https://www.cnblogs.com/xx0405/p/5305566.html

1. 创建一个时间格式的单元格

Demo4.java

package com.wajpzywj.exceldemo.main;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

import java.io.FileOutputStream;
import java.util.Calendar;
import java.util.Date;

public class Demo4 {
    public static void main(String[] args) throws Exception{
        Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿
        Sheet sheet=wb.createSheet("第一个Sheet页");  // 创建第一个Sheet页

        Row row=sheet.createRow(0); // 创建一个行

        Cell cell=row.createCell(0); // 创建一个单元格  第1列
        cell.setCellValue(new Date());  // 给单元格设置值

        CreationHelper createHelper=wb.getCreationHelper();
        CellStyle cellStyle=wb.createCellStyle(); //单元格样式类
        cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyy-mm-dd hh:mm:ss"));
        cell=row.createCell(1); // 第二列
        cell.setCellValue(new Date());
        cell.setCellStyle(cellStyle);

        cell=row.createCell(2);  // 第三列
        cell.setCellValue(Calendar.getInstance());
        cell.setCellStyle(cellStyle);

        FileOutputStream fileOut=new FileOutputStream("d:\\工作簿.xls");
        wb.write(fileOut);
        fileOut.close();
    }
}

在这里插入图片描述
在这里插入图片描述

2,处理不同内容格式的单元格

Demo5.java

package com.wajpzywj.exceldemo.main;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

import java.io.FileOutputStream;
import java.util.Date;

public class Demo5 {
    public static void main(String[] args) throws Exception{
        Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿
        Sheet sheet=wb.createSheet("第一个Sheet页");  // 创建第一个Sheet页

        Row row=sheet.createRow(0); // 创建一个行

        Cell cell=row.createCell(0); // 创建一个单元格  第1列
        cell.setCellValue(new Date());  // 给单元格设置值

        row.createCell(1).setCellValue(1);
        row.createCell(2).setCellValue("一个字符串");
        row.createCell(3).setCellValue(true);
        row.createCell(4).setCellValue(HSSFCell.CELL_TYPE_NUMERIC);
        row.createCell(5).setCellValue(false);

        FileOutputStream fileOut=new FileOutputStream("d:\\工作簿.xls");
        wb.write(fileOut);
        fileOut.close();
    }
}

在这里插入图片描述
在这里插入图片描述

3,遍历工作簿的行和列并获取单格内容

在这里插入图片描述
在这里插入图片描述
我们遍历这个excel。

Demo6.java

package com.wajpzywj.exceldemo.main;

import com.wajpzywj.exceldemo.utils.WorkbookFactory;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;

import java.io.FileInputStream;

public class Demo6 {
    public static void main(String[] args) throws Exception{
//        InputStream is=new FileInputStream("d:\\个人名单.xlsx");
//        POIFSFileSystem fs=new POIFSFileSystem(is);
//        HSSFWorkbook wb=new HSSFWorkbook(fs);
        Workbook wb = WorkbookFactory.create(new FileInputStream("d:\\个人名单.xlsx"));

        XSSFSheet xssfSheet= (XSSFSheet) wb.getSheetAt(0); // 获取第一个Sheet页
        if(xssfSheet==null){
            return;
        }
        // 遍历行Row
        for(int rowNum=0;rowNum<=xssfSheet.getLastRowNum();rowNum++){
            XSSFRow xssfRow=xssfSheet.getRow(rowNum);
            if(xssfRow==null){
                continue;
            }
            // 遍历列Cell
            for(int cellNum=0;cellNum<=xssfRow.getLastCellNum();cellNum++){
                XSSFCell xssfCell=xssfRow.getCell(cellNum);
                if(xssfCell==null){
                    continue;
                }
                System.out.print(" "+getValue(xssfCell));
            }
            System.out.println();
        }
    }

    private static String getValue(XSSFCell xssfCell){
        if(xssfCell.getCellType()==XSSFCell.CELL_TYPE_BOOLEAN){
            return String.valueOf(xssfCell.getBooleanCellValue());
        }else if(xssfCell.getCellType()==XSSFCell.CELL_TYPE_NUMERIC){
            return String.valueOf(xssfCell.getNumericCellValue());
        }else{
            return String.valueOf(xssfCell.getStringCellValue());
        }
    }
}

在这里插入图片描述

4,文本提取

我们文本提取上面个人名单.xls表格。。。

Demo7.java

package com.wajpzywj.exceldemo.main;

import com.wajpzywj.exceldemo.utils.WorkbookFactory;
import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.xssf.extractor.XSSFExcelExtractor;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;

public class Demo7 {
    public static void main(String[] args) throws Exception{
        Workbook wb = WorkbookFactory.create(new FileInputStream("d:\\个人名单.xlsx"));

        XSSFExcelExtractor excelExtractor=new XSSFExcelExtractor((XSSFWorkbook) wb);
        excelExtractor.setIncludeSheetNames(false);// 我们不需要Sheet页的名字
        System.out.println(excelExtractor.getText());
    }
}

控制台显示:
在这里插入图片描述
excelExtractor.setIncludeSheetNames(false);这个如果为true的话就会显示Sheet页了

excelExtractor.setIncludeSheetNames(true):

控制台输出:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值