读取excel文件后,将一行数据封装成一个对象,多行返回一个map对象即可
/**
* 读取excel文件后,将一行数据封装成一个对象,多行返回一个map对象即可
* @param path 输出的文件路径
* @return
*/
public static Map<Integer,List<String>> readUrl(String path){
//想要读取的url地址
URL url=null;
XSSFWorkbook xssfWorkbook = null;
Map<Integer,List<String>> map=new HashMap <Integer, List <String>>();
InputStream inputStream = null;
Workbook workbook = null;
try {
url=new URL(path);
URLConnection conn = url.openConnection();
inputStream = conn.getInputStream();
workbook = WorkbookFactory.create(inputStream);
inputStream.close();
//工作表对象
Sheet sheet = workbook.getSheetAt(0);
//获取最后一行是第几行
int lastRowNum = sheet.getLastRowNum()+1;
//由于第一行是字段名称,不做读取,后面建表的时候生成字段,因此这里从第二行开始读取,注意第二行的下标是1
for (int i = 0; i < lastRowNum; i++) {
//获取行
Row row = sheet.getRow(i);
//进行行的非空判断后,在遍历,避免空指针
if(row != null){
//实例化一个List集合,用于存放一行读取出来的所有单元数据
List<String> list = new ArrayList<>();
//遍历行
for (Cell cell : row) {
String value="";
//获得单元格,对单元格进行非空判断
if(cell != null){
//设置单元格数据的类型为字符串,这样即使表中数据有其他类型,也不用考虑类型转换,考虑不周有可能发生的类型转换异常
cell.setCellType(1);
//获取单元格的数据
value = cell.getStringCellValue();
}
//将每个单元格数据加入List集合中
//System.out.print(value+ ' ');
list.add(value);
}
//每打印一行就换一行
//System.out.println();
//将读取出的每个行的数据封装成一个对象
map.put(i,list);
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InvalidFormatException e) {
e.printStackTrace();
}
return map;
}