Java文件处理和读取Excel表格的实用方法
时间:2024-04-20 08:48:54来源:Lwgzc手游网作者:佚名我要评论 用手机看
扫描二维码随身看资讯
使用手机 二维码应用 扫描右侧二维码,您可以
1. 在手机上细细品读~
2. 分享给您的微信好友或朋友圈~
文件兼容类型。
// 兼容文件后缀列表
private static final String FILE_TYPE;
static {
FILE_TYPE = ".xls/.xlsx/.csv";
}
文件检查。
/**
* 文件有效性检查
*
* @param dataFile 数据文件
* @return 检查结果
*/
public static void checkFile(File dataFile) throws Exception {
// 文件有效性判断
if (!dataFile.exists()) {
throw new Exception("文件不存在");
}
if (dataFile.isDirectory()) {
throw new Exception("不是文件");
}
// 检查文件后缀
String path = dataFile.getAbsolutePath();
String suffix = path.substring(path.lastIndexOf("."));
if (FILE_TYPE.indexOf(suffix) == -1) {
throw new Exception("不是文本薄文件");
}
}
读取文本薄。
/**
* 读取 excelPath所指的excel文件
*
* @param excelPath excel文件路径
* @param sheetIndex 文本簿索引
* @return
*/
public static List<Map<String, String>> readExcel(String excelPath, int sheetIndex) throws Exception {
List<Map<String, String>> dataList = new ArrayList<>();
File dataFile = new File(excelPath);
// 检查文件
checkFile(dataFile);
XSSFWorkbook workbook = new XSSFWorkbook(dataFile);// 获取数据到工作簿
if (sheetIndex < 0 || sheetIndex >= workbook.getNumberOfSheets())
throw new Exception("此文本薄条目不存在");
XSSFSheet sheet = workbook.getSheetAt(sheetIndex);// 获取第n张表
XSSFRow titleRow = sheet.getRow(0);// 标题行
for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {// 数据从第二行开始
Map<String, String> dataMap = new HashMap<>();
XSSFRow dataRow = sheet.getRow(i);// 数据行
if (dataRow == null) // 排除空行(当当行所有列全为空时,此行不存在)
continue;
if (isValidRow(dataRow)) // 排除无效行
continue;
for (int j = 0; j < dataRow.getPhysicalNumberOfCells(); j++) {
XSSFCell titleCell = titleRow.getCell(j);// 表头
XSSFCell dataCell = dataRow.getCell(j);// 数据
dataMap.put(titleCell.getStringCellValue(), getStringCellValue(dataCell));
}
dataList.add(dataMap);
}
return dataList;
}
判断是否是无效行。
/**
* 判断数据行是否有效
*
* @param dataRow 数据行
* @return
*/
public static boolean isValidRow (XSSFRow dataRow) {
boolean isValid = true;
// 若列无内容,则此列不存在
XSSFCell cell0 = dataRow.getCell(0);// 若第一列有内容,视为有效
if (cell0 != null)
isValid = false;
return isValid;
}
获取单元格数据。
/**
* 根据cell值类型获取值
*
* @param cell 文档列
* @return
*/
public static String getStringCellValue(XSSFCell cell) {
if (cell == null) {
return "";
}
if (cell.getCellType() == CellType.NUMERIC) {
return cell.getNumericCellValue() + "";
} else {
return cell.getStringCellValue();
}
}
本文完结。
热门手游下载
热门文章
热门手游推荐
换一批
- 1
加查之花 正版
- 2
爪女孩 最新版
- 3
企鹅岛 官方正版中文版
- 4
捕鱼大世界 无限金币版
- 5
球球英雄 手游
- 6
内蒙打大a真人版
- 7
烦人的村民 手机版
- 8
跳跃之王手游
- 9
蛋仔派对 国服版本
- 10
情商天花板 2024最新版