using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Drawing.Imaging;
using Aspose.Cells;
using Aspose.Cells.Rendering;
using System.IO;
using UnityEngine.UI;
///
/// 加载excel并转为图片
///
public class LoadExcelTest : MonoBehaviour
{
public static LoadExcelTest Instance;
public GameObject imageprefab;
public Transform content;
private void Start()
{
Instance = this;
}
///
/// 加载excel
///
public void LoadExcelGO(string path)
{
//清理content下的旧物体
for (int i = 0; i < content.childCount; i++)
{
Destroy(content.GetChild(i).gameObject);
}
//查找整个文档
Workbook book = new Workbook(path);
//获取一个工作表
Worksheet sheet = book.Worksheets[0];
//设置边距
sheet.PageSetup.LeftMargin = 0;
sheet.PageSetup.RightMargin = 0;
sheet.PageSetup.BottomMargin = 0;
sheet.PageSetup.TopMargin = 0;
//设置图片的打印格式
ImageOrPrintOptions imageOptions = new ImageOrPrintOptions();
imageOptions.ImageFormat = ImageFormat.Jpeg;
imageOptions.OnePagePerSheet = true;
imageOptions.PrintingPage = PrintingPageType.IgnoreBlank;
//excel转图片的转换器对象
SheetRender sr = new SheetRender(sheet, imageOptions);
//声明内存流,将图片转换为内存流,再由流转换为byte数组,然后用texture2d加载byte数组
using (MemoryStream ms = new MemoryStream())
{
sr.ToImage(0, ms);
byte[] buff = new byte[ms.Length];
ms.Seek(0, SeekOrigin.Begin);
ms.Read(buff, 0, (int)ms.Length);
//注意这个iamge的命名空间为system.drawing不是unity.ui,这个图片的目的是提供图片的宽高
System.Drawing.Image sizeImage = System.Drawing.Image.FromStream(ms);
Texture2D texture2D = new Texture2D(sizeImage.Width, sizeImage.Height);
texture2D.LoadImage(buff);
Image image = Instantiate(imageprefab, content).GetComponent();
//根据转化出来的图片的大小设置unity image的大小
image.rectTransform.sizeDelta = new Vector2(sizeImage.Width, sizeImage.Height);
//用texture2d为精灵赋值
image.sprite = Sprite.Create(texture2D, new Rect(0, 0, texture2D.width, texture2D.height), Vector2.zero);
}
}
}