package com.yifu.cloud.plus.v1.yifu.social.util;


import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.OSSUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.io.File;
import java.io.InputStream;
import java.net.URL;

/**
 * @Author fxj
 * @Date 2024/12/9
 * @Description  excel 转换为 图片 并上传阿里云 （上传后自动删除生成的图片文件）
 * @Version 1.0
 */
@Component
public class ExcelToImage {

	public R<URL> excelToImg(InputStream inputStream ,OSSUtil ossUtil){
		String projectRoot = System.getProperty("user.dir");
		//加载Excel工作表
		Workbook wb = new Workbook();
		wb.loadFromHtml(inputStream);
		//获取工作表
		Worksheet sheet = wb.getWorksheets().get(0);
		//调用方法将Excel工作表保存为图片
		sheet.saveToImage(projectRoot+"\\ToImg.png");
		File file = null;
		try {
			file = new File(projectRoot+"\\ToImg.png");
			if (file.exists()){
				String key  = System.currentTimeMillis() + file.getName();
				if (ossUtil.uploadFileByFile(file,key,null)){
					return R.ok(ossUtil.getObjectUrl(null,key));
				}else {
					return R.failed(CommonConstants.RESULT_DATA_FAIL+":ExcelToImage上传OSS异常");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			return R.failed(CommonConstants.RESULT_DATA_FAIL+":ExcelToImage转换异常-"+e.getMessage());
		} finally {
			if (file.exists()){
				file.delete();
			}
		}
		return R.failed(CommonConstants.RESULT_DATA_FAIL);
		//调用方法，将指定Excel单元格数据范围保存为图片
		//sheet.saveToImage("ToImg2.png",8,1,30,7);

		/*//调用方法将Excel保存为HTML
		sheet.saveToHtml("ToHtml.html");

		//调用方法将Excel保存为XPS
		sheet.saveToFile("ToXPS.xps", String.valueOf(FileFormat.XPS));

		//调用方法将Excel保存为CSV
		sheet.saveToFile("ToCSV.csv", String.valueOf(FileFormat.CSV));

		//调用方法将Excel保存为XML
		sheet.saveToFile("ToXML.xml", String.valueOf(FileFormat.XML));

		//调用方法将Excel保存为PostScript
		sheet.saveToFile("ToPostScript.postscript", String.valueOf(FileFormat.PostScript));

		//调用方法将Excel保存为PCL
		sheet.saveToFile("ToPCL.pcl", String.valueOf(FileFormat.PCL));*/
	}
}
