如何解析word文件中的公式內容

路飛的影子發表於2020-04-05

問題:這裡講的就是如何對解析後的excel進行資料的處理,此處對公式的處理

如圖,

所以此處在後臺解析出來的是公式,後臺程式碼需要進行處理:

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

/**
	 * 得到Excel表中的值
	 * 
	 * @param cell Excel中的每一個格子
	 * @return Excel中每一個格子中的值
	 */
	private static String getValue(Cell cell) {
		String value = null;
		switch (cell.getCellTypeEnum()) {
		case FORMULA:    //公式
			try {
				value = String.valueOf(cell.getNumericCellValue());
			} catch (IllegalStateException e) {
				value = String.valueOf(cell.getRichStringCellValue());
			}
			break;
		case NUMERIC:    //數值
			value = String.valueOf(cell.getNumericCellValue());
			break;
		case STRING:    //字串
			value = String.valueOf(cell.getRichStringCellValue());
			break;
		case BLANK:    //空白值
			break;
		case BOOLEAN:    //Boolean
			value = String.valueOf(cell.getBooleanCellValue());
			break;
		case ERROR:
			break;
		case _NONE:
			break;
		default:
			break;
		}
		value = switchNumeric(value);
		return value;
	}
	private static String switchNumeric(String str) {
		if (str.indexOf(".") > 0) {
			str = str.replaceAll("0+?$", "").replaceAll("[.]$", "");
		}
		return str;
	}

 

如果上面的switch 中的case 字串報錯,可能需要你使用JDK1.8或者更高版本的JDK。

相關文章