制作一个简单的案例,用于读取Excel文件中的数据
使用的工具是idea、maven
[1]准备一个EXCEL文件
存放于D:\test.xls目录下 (测试内容如下)
| ID | 藏品名称 | 类别 | 观看人数 | 创建时间 | 更新时间 | 置顶 |
| 33 | 长征路上 | 木雕 | 0人 | 2022.02.16 15:09:12 | 2022.02.16 15:09:12 | 否 |
| 32 | 怃睡 | 木雕 | 0人 | 2022.02.16 15:08:11 | 2022.02.16 15:08:11 | 否 |
| 31 | 平安万福 | 木雕 | 0人 | 2022.02.16 15:05:50 | 2022.02.16 15:05:50 | 否 |
| 30 | 腾飞 | 木雕 | 0人 | 2022.02.16 15:04:28 | 2022.02.16 15:04:28 | 否 |
| 29 | 麻姑献寿 | 木雕 | 1人 | 2022.02.15 15:19:44 | 2022.02.15 16:25:33 | 否 |
| 28 | 寿翁 | 木雕 | 1人 | 2022.02.15 15:15:34 | 2022.02.15 16:20:09 | 否 |
| 27 | 溢彩中华 | 木雕 | 2人 | 2022.02.10 17:14:24 | 2022.02.15 15:08:22 | 是 |
| 26 | 持经罗汉 | 木雕 | 2人 | 2022.02.10 17:12:49 | 2022.02.15 15:13:13 | 否 |
[2]读取文件出数据
①创建一个项目
②导入依赖包(pom.xml)
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.0</version>
</dependency>
③编写一个用于测试的实体类 (Collection.java)
public class Collection {
private String id;
private String name;
private String type;
private String num;
private String createTime;
private String updateTime;
private String top;
public Collection(String str) {
//解析传入的字符串并赋值
String[] split = str.split(",");
this.id = split[0].replace(".0","");
this.name = split[1];
this.type = split[2];
this.num = split[3];
this.createTime = split[4];
this.updateTime = split[5];
this.top = split[6];
}
@Override
public String toString() {
return "collection{" +
"id=" + id +
", name=" + name +
", type=" + type +
", num=" + num +
", createTime=" + createTime +
", updateTime=" + updateTime +
", top=" + top +'}';
}
}
④编写测试类
public class TestOne {
/**
* [1]准备一个EXCEL文件
* [2]读取文件出数据
*/
public static void main(String[] args) throws Exception {
//{1}创建一个文件POIFS文件系统读取xlx类型文件
POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream("D:\\test.xls"));
//{2}得到Excel工作簿对象
HSSFWorkbook wb = new HSSFWorkbook(fs);
//{3}得到工作表对象 --- 默认第一张表
HSSFSheet sheet = wb.getSheetAt(0);
//{4}开始解析数据
for (int i = 0;i<sheet.getLastRowNum();i++){
//{5}获得行对象
HSSFRow row = sheet.getRow(i);
String temStr = "";
for (int j = 0;j<row.getLastCellNum();j++){
//{6}获得单元格对象
HSSFCell cell = row.getCell(j);
temStr += getCellStringValue(cell)+",";
}
Collection temCollection = new Collection(temStr);
//{ps}用于输出值
System.out.println(temCollection);
}
}
/**
* 根据不同的类型的不同返回不同的字符串类型值
*/
public static String getCellStringValue(HSSFCell cell) throws Exception {
String cellValue = "";
switch (cell.getCellType()) {
//字符串类型
case STRING:
cellValue = cell.getStringCellValue();
if(cellValue.trim().equals("")||cellValue.trim().length()<=0){
cellValue=" ";
}
break;
//数值类型
case NUMERIC:
cellValue = String.valueOf(cell.getNumericCellValue());
break;
//公式
case FORMULA:
cell.setCellType(NUMERIC);
cellValue = String.valueOf(cell.getNumericCellValue());
break;
case BLANK:
cellValue=" ";
break;
case BOOLEAN:
cellValue= String.valueOf(cell.getBooleanCellValue());
break;
case ERROR:
throw new Exception("您上传的文件存在错误信息");
default:
cellValue=" ";
break;
}
return cellValue;
}
}
本文演示了如何使用Apache POI库在Java中读取Excel文件。首先创建了一个项目,并在pom.xml中引入了Apache POI依赖。然后定义了一个实体类`Collection`来存储数据。接着在`TestOne`测试类中,通过`POIFSFileSystem`和`HSSFWorkbook`读取Excel文件,遍历每一行数据,将单元格内容转换为字符串并用`Collection`对象存储,最后打印出所有数据。
664

被折叠的 条评论
为什么被折叠?



