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文件可以自行创建。
学习让我快乐,工作让我快乐。学习和工作都是为了更好的生活!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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)