java ---读取文件

读取文件

读取文件第一行的内容显示出来放在列表中,并打印出第一个单元格的内容。


xlsx文件:

代码

'''

import java.io.FileInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Map;
import java.util.HashMap;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
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 org.apache.poi.hssf.usermodel.HSSFWorkbook;
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;
public class fileinput{
public static void main(String [] args) {
System.out.println("start");
getInputData("book1.xlsx");
System.out.println(inputdata.get("max"));//打印整行内容
System.out.println(inputdata.get("max").get(0));//打印单元格的内容
}
public static Map<String,List<Double>> inputdata = new HashMap<String, List<Double>>();//inputdata用来存储input.xlsx常量,key是String类型,取出
//的数据存放在List
//获取input.xlsx常量
public static void getInputData (String fileName) {//getInputdata静态方法
File inputFile = new File(fileName);//inputfile对象
XSSFWorkbook wb = null;//初始化wb
try {
wb = new XSSFWorkbook(new FileInputStream(inputFile));
} catch (IOException e) {
e.printStackTrace();
}
int numberOfSheets = wb.getNumberOfSheets();//获取sheet数
for (int x = 0; x < numberOfSheets; x++) {//循环sheet
XSSFSheet sheet = wb.getSheetAt(x);//对象
for(int rowNum=0; rowNum<=sheet.getLastRowNum();rowNum++){//循环行数
XSSFRow xssfRow = sheet.getRow(rowNum); //对象
if (null != xssfRow) {
String[] singleRow = new String[sheet.getLastRowNum()];//存储每一行数据
int n = 0;
for(int cosNum=0;cosNum<xssfRow.getLastCellNum();cosNum++){ //循环一行中所有单元格
XSSFCell cell = xssfRow.getCell(cosNum);//获取单元格的内容
switch (cell.getCellType()) {//判断单元格数据类型
case Cell.CELL_TYPE_NUMERIC:
if (!DateUtil.isCellDateFormatted(cell)) {//不是日期类型时
cell.setCellType(Cell.CELL_TYPE_STRING);//设置单元格的数据类型为字符串类型
String temp = cell.getStringCellValue();//读取单元格的数据
if ( inputdata.get(singleRow[0]) != null){//读取到的第一行不为空时
inputdata.get(singleRow[0]).add(new Double(temp));//数据加到第一行
} else {//为空时,将读取的数据放入LIST中,将LIST加入inputdata 的第一行
List<Double> db = new ArrayList<Double>();
db.add(new Double(temp));
inputdata.put(singleRow[0], db);
}
}
break;
case Cell.CELL_TYPE_STRING:
singleRow[n] = cell.getStringCellValue().trim();
break;
}
n++;
}
}
}
}
}

}

相关的jar包:
自行下载,并放入工程文件架下lib中。
xlsx文件可以自行创建。

posted @   heyhy  Views(200)  Comments(0Edit  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
Title
点击右上角即可分享
微信分享提示