
Maven依赖设置导入相应jar包
读取.xlsx表格文件数据
写入数据到.xlsx表格文件
读写后缀名为.xls类型的表格文件(旧版表格文件)
详细视频教程
4.0.0 org.example ReadExcel war 1.0-SNAPSHOT ReadExcel Maven Webapp http://maven.apache.org junit junit 3.8.1 test org.apache.poi poi 3.17 org.apache.poi poi-ooxml 3.17 ReadExcel
示例:
package Excel;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.FileInputStream;
import java.util.Scanner;public class ReadExcel {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入Excel表格文件的磁盘路径:");String str = input.next();new ReadExcel().readExcel(str);}public void readExcel(String path){try{//1.建立输入流FileInputStream fip = new FileInputStream(path);//2.在输入流中获取Excel工作簿XSSFWorkbook book = new XSSFWorkbook(fip);//3.获取工作簿中要读取的工作表,可以通过工作表的下标(从0开始的)或者工作表的名称来获取XSSFSheet sheet = book.getSheetAt(0);//XSSFSheet sheet = book.getSheet("Sheet1");//读取表头字符串XSSFRow rows = sheet.getRow(0);String ss1 = rows.getCell(0).getStringCellValue();String ss2 = rows.getCell(1).getStringCellValue();String ss3 = rows.getCell(2).getStringCellValue();System.out.println(ss1+"\t\t"+ss2+"\t\t"+ss3);//4.获取工作表中数据的总行数int n = sheet.getPhysicalNumberOfRows();//5.循环逐行读取,打印输出for (int i = 1; i
运行截图:

注意:

//第0行
XSSFRow row = sheet.getRow(0);
XSSFCell cell=row.getCell(0);
//判断读取对象是否为空
if(cell==null||row==null){cell=row.createCell(0);
}

示例:
package Excel;import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;
import java.util.Scanner;public class WriteExcel {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入数据存放的磁盘路径:");String str = input.next();new WriteExcel().writeExcel(str);}public void writeExcel(String path){try{//1.建立输出流FileOutputStream fop = new FileOutputStream(path);//2.创建工作簿XSSFWorkbook book = new XSSFWorkbook();//3.创建工作表XSSFSheet sheet = book.createSheet();//4.创建一行XSSFRow row = sheet.createRow(0);//第0行,即首行//5.创建单元格即相应的列row.createCell(0).setCellValue("许红豆");//第0行的第0列row.createCell(1).setCellValue("谢之遥");//第0行的第1列//6.将工作簿写入到输出流,使得其写入到磁盘文件中去book.write(fop);//7.关闭输出流fop.close();System.out.println("写入成功!");}catch (Exception e){System.out.println("写入失败:"+e);}}
}
运行截图:

.xlsx是新版的表格文件,而.xls是旧版的表格文件,二者读写的原理是一致的,代码相近,只是一些类名称不同,主要在工作簿、工作表、行的定义上有所区别
新版.xlsx
XSSFWorkbook book = new XSSFWorkbook(fip);
XSSFSheet sheet = book.getSheetAt(0);
XSSFRow rows = sheet.getRow(0);
旧版.xls
HSSFWorkbook book = new HSSFWorkbook (fip);
Sheet sheet = book.getSheetAt(0);
Row rows = sheet.getRow(0);
【学习分享】JAVA如何读写Excel文档
https://www.bilibili.com/video/BV1aV411z7ey?p=4&vd_source=857668257512c5571840acab6bd48bf5
END.