package com.yh.saas.plugin.base.utils;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFPrintSetup;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import com.yh.saas.plugin.base.entity.view.ExportCellStyleView;
import com.yh.saas.plugin.base.entity.view.ExportPrintStylesView;

public class ExportCommonStyles {

	/**
	 * 
	 * @param view        ExportPrintStylesView对象
	 * @param headerTitle 头部文字
	 * @param wb          文件
	 * @return
	 */
	public static HSSFSheet setSheet(ExportPrintStylesView view, String headerTitle, HSSFWorkbook wb) {

		// 第二步，在webbook中添加一个sheet,对应Excel文件中的sheet
		HSSFSheet sheet = wb.createSheet(headerTitle);
		//
		// 设置打印参数
		sheet.setMargin(HSSFSheet.TopMargin, view.getTopMargin());// 页边距（上）
		sheet.setMargin(HSSFSheet.BottomMargin, view.getBottomMargin());// 页边距（下）
		sheet.setMargin(HSSFSheet.LeftMargin, view.getLeftMargin());// 页边距（左）
		sheet.setMargin(HSSFSheet.RightMargin, view.getRightMargin());// 页边距（右）

		// 设置水平居中
		sheet.setHorizontallyCenter(view.isHorizontallyCenter());
		// 设置是否显示网络线
		sheet.setDisplayGridlines(view.isDisplayGridlines());
		// 设置是否打印网络线
		sheet.setPrintGridlines(view.isPrintGridlines());
		sheet.setAutobreaks(view.isAutobreaks());
		return sheet;
	}

	/**
	 * 设置打印对象
	 *
	 * @param sheet
	 * @param landscape 打印方向，true：横向，false：纵向(默认)
	 * @param scale     设置缩放比例
	 * @param paperSize 纸张类型
	 * @return
	 */
	public static HSSFSheet setPrintSetup(HSSFSheet sheet, Boolean landscape, short scale, short paperSize) {
		// 创建打印设置对象
		HSSFPrintSetup ps = sheet.getPrintSetup();
		// 打印方向，true：横向，false：纵向(默认)
		ps.setLandscape(landscape);
		// 设置缩放比例
		ps.setScale(scale);
		// 纸张类型
		ps.setPaperSize(paperSize);
		return sheet;
	}
	
	/**
	 * 设置字体
	 *
	 * @param fontName   字体
	 * @param boldweight 加粗
	 * @param fontPoints 字号
	 * @param wb
	 * @return
	 */
	@SuppressWarnings("deprecation")
	public static HSSFFont setFont(String fontName, short boldweight, int fontPoints, HSSFWorkbook wb) {
		HSSFFont font = wb.createFont();
		font.setFontName(fontName);
		if (boldweight != 0) {
			font.setBoldweight(boldweight);
		}
		font.setFontHeightInPoints((short) fontPoints);
		return font;
	}
	
	/**
	 * 设置单元格样式
	 *
	 * @param view
	 * @param wb
	 * @return
	 */
	@SuppressWarnings("deprecation")
	public static HSSFCellStyle setCellStyle(ExportCellStyleView view, HSSFWorkbook wb) {
		HSSFCellStyle cellStyle = wb.createCellStyle();
		// 指定单元格靠水平对齐
		if (view.getAlignment() != 0) {
			cellStyle.setAlignment(view.getAlignment());
		}
		// 指定单元格垂直对齐
		if (view.getVerticalAlignment() != 0) {
			cellStyle.setVerticalAlignment(view.getVerticalAlignment());
		}
		// 下边框
		if (view.getBorderBottom() != 0) {
			cellStyle.setBorderBottom(view.getBorderBottom());
		}
		// 左边框
		if (view.getBorderLeft() != 0) {
			cellStyle.setBorderLeft(view.getBorderLeft());
		}
		// 上边框
		if (view.getBorderTop() != 0) {
			cellStyle.setBorderTop(view.getBorderTop());
		}
		// 右边框
		if (view.getBorderRight() != 0) {
			cellStyle.setBorderRight(view.getBorderRight());
		}
		// 自动换行
		cellStyle.setWrapText(view.getWrapText());
		// 设置字体
		cellStyle.setFont(view.getFont());
		// 设置单元格样式
		if (view.getDataFormat() != 0) {
			cellStyle.setDataFormat(view.getDataFormat());
		}
		// 设置背景色
		if (view.getBackGroundColor() != 0) {
			cellStyle.setFillForegroundColor(view.getBackGroundColor());
		}
		if (view.getFillPattern() != 0) {
			cellStyle.setFillPattern(view.getFillPattern());
		}
		return cellStyle;
	}

	private ExportCommonStyles() {
	}

}
