Java 读取 Excel 文件格式

在 Java 中 可使用 apache.poi 来读取 Excel 文件,相关代码如下:

/**
 *
 * @param fileIn
 * @param sheetIndex  读取 excel 的哪个 sheet
 * @param rowIndexs   从第几行开始读取,下标从 0 开始
 * @return
 * @throws IOException
 */
public List<List<String>> readExcel(InputStream fileIn, int sheetIndex, int rowIndexs) throws IOException {
    
    
	POIFSFileSystem fs = new POIFSFileSystem(fileIn);
	HSSFWorkbook wb = new HSSFWorkbook(fs);

	// 遍历每个 Sheet
	// for (int index = 0; index < wb.getNumberOfSheets(); index++) {
    
    
	// HSSFSheet st = wb.getSheetAt(index);
	// }

	// 读取第几个 Sheet,从 0 开始
	HSSFSheet st = wb.getSheetAt(sheetIndex);
	List<List<String>> list = new ArrayList<List<String>>();

	// 读取每一行
	// 注意这里必须是小于等于 <=
	for (int rowIndex = rowIndexs; rowIndex <= st.getLastRowNum(); rowIndex++) {
    
    
		HSSFRow row = st.getRow(rowIndex);

		List<String> l = new ArrayList<String>();
		for (Cell cell : row) {
    
    
               // String value = cellToString(wb, cell); 对日期类型的数据转换会有问题
			String value = getCellValue(cell);
			l.add(value);
		}

		list.add(l);
	}

	return list;
}

private String getCellValue(Cell cell) {
    
    
	String value = "";

	if( cell.getCellTypeEnum() == CellType.STRING) {
    
    
		// 字符串类型
		value = cell.getStringCellValue();

	} else if (cell.getCellTypeEnum() == CellType.NUMERIC) {
    
    
		if (HSSFDateUtil.isCellDateFormatted(cell)) {
    
    
			// 日期类型
			SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
			value = fmt.format(cell.getDateCellValue());
		} else {
    
    
			// 数字类型
			value = String.valueOf(Double.valueOf(cell.getNumericCellValue()).intValue());
		}
	} else if (cell.getCellTypeEnum() == CellType.BLANK){
    
    
		value = "";
	} else {
    
    
		value = "";
	}

	return value;
}

private String cellToString(HSSFWorkbook wb, Cell cell) {
    
    
	// 用于数据类型转换
	DataFormatter objDefaultFormat = new DataFormatter();
	FormulaEvaluator objFormulaEvaluator = new HSSFFormulaEvaluator(wb);

	objFormulaEvaluator.evaluate(cell);
	return objDefaultFormat.formatCellValue(cell, objFormulaEvaluator);
}

apache.poi 的 maven 依赖:

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.0.0</version>
    </dependency>
</dependencies>

猜你喜欢

转载自blog.csdn.net/LUAOHAN/article/details/115207393