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 @ 2020-09-22 11:37  heyhy  Views(198)  Comments(0Edit  收藏  举报
Title