package com.sunda.spmsweb.util;

import org.apache.poi.ss.usermodel.Cell;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.CellType;

/**
 * 
 * @author zhangpeng
 * @version v1.0
 * @param <T>
 */
public class ExportExcel<T> {
	
//	private static final Logger logger = LoggerFactory.getLogger(ExportExcel.class);

	@SuppressWarnings("deprecation")
	public static String getCellFormatValue(Cell cell) {
		String cellvalue = "";
		if (cell == null || cell.equals(null) || cell.getCellType() == CellType.BLANK) {
			cellvalue = "";
		} else {
			switch (cell.getCellType()) {
			case NUMERIC:{
				if (HSSFDateUtil.isCellDateFormatted(cell)) {
                  Date date = cell.getDateCellValue();
                  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                  cellvalue = sdf.format(date);
				} else {
					BigDecimal bigDecimal = BigDecimal.valueOf(cell.getNumericCellValue());
					cellvalue = bigDecimal.toPlainString();
					String str=".0";
					if(org.apache.commons.lang3.StringUtils.isNotBlank(cellvalue) && cellvalue.endsWith(str)){
						cellvalue =cellvalue.substring(0,cellvalue.length() - 2);
					}else{
						cellvalue = String.valueOf(cell.getNumericCellValue());
						DecimalFormat df = new DecimalFormat("#.#########");
						cellvalue=df.format(Double.valueOf(cellvalue));
					}
				}
				break;
			}
			case FORMULA:{
				if (HSSFDateUtil.isCellDateFormatted(cell)) {
					Date date = cell.getDateCellValue();
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
					cellvalue = sdf.format(date);
				} else {
					BigDecimal bigDecimal = BigDecimal.valueOf(cell.getNumericCellValue());
					cellvalue = bigDecimal.toPlainString();
					String str=".0";
					if(org.apache.commons.lang3.StringUtils.isNotBlank(cellvalue) && cellvalue.endsWith(str)){
						cellvalue =cellvalue.substring(0,cellvalue.length() - 2);
					}else{
						cellvalue = String.valueOf(cell.getNumericCellValue());
						DecimalFormat df = new DecimalFormat("#.#########");
						cellvalue=df.format(Double.valueOf(cellvalue));
					}
				}
				break;
			}
			case STRING:{
				cellvalue = cell.getRichStringCellValue().getString();
				break;
			}
			default:
				cellvalue = " ";
			}
		}
		return cellvalue;
	}

}
