天天看點

關于UNITY中System.Drawing引用失敗的處理方法關于UNITY中System.Drawing引用失敗的處理方法

關于UNITY中System.Drawing引用失敗的處理方法

今天在使用EPPlus中,遇到一個處于This type has been forwarded to assembly ‘System.Drawing,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a’ .

You must add a reference to assembly ‘System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’.的問題。

目的是要在UNITY中使用C#更改Excel中字型或者邊框的顔色,但是在顔色這裡遇到了兩邊版本不一緻的問題。以下是我做的處理操作即Debug。

問題代碼如下(以設定單元格邊框為例)

網上找到使用EPPlus設定Excel單元格邊框有兩種方式

//第一種
//worksheet.Cells[i + 7, 10].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));//設定單元格所有邊框
worksheet.Cells[i + 7, 10].Style.Border.BorderAround(ExcelBorderStyle.Thin, System.Drawing.Color.Black);//設定單元格所有邊框
//第二種
worksheet.Cells[i + 7, 10].Style.Border.Top.Style = ExcelBorderStyle.Thin;
worksheet.Cells[i + 7, 10].Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
worksheet.Cells[i + 7, 10].Style.Border.Left.Style = ExcelBorderStyle.Thin;
worksheet.Cells[i + 7, 10].Style.Border.Right.Style = ExcelBorderStyle.Thin;

//worksheet.Cells[i + 7, 10].Style.Border.Top.Color.SetColor(Color.FromArgb(191, 191, 191));
//worksheet.Cells[i + 7, 10].Style.Border.Bottom.Color.SetColor(Color.FromArgb(191, 191, 191));
//worksheet.Cells[i + 7, 10].Style.Border.Left.Color.SetColor(Color.FromArgb(191, 191, 191));
//worksheet.Cells[i + 7, 10].Style.Border.Right.Color.SetColor(Color.FromArgb(191, 191, 191));

worksheet.Cells[i + 7, 10].Style.Border.Top.Color.SetColor(System.Drawing.Color.Black);
worksheet.Cells[i + 7, 10].Style.Border.Bottom.Color.SetColor(System.Drawing.Color.Black);
worksheet.Cells[i + 7, 10].Style.Border.Left.Color.SetColor(System.Drawing.Color.Black);
worksheet.Cells[i + 7, 10].Style.Border.Right.Color.SetColor(System.Drawing.Color.Black);
           

以上代碼是兩種設定單元格邊框格式的方法,經測試都可以使用,但要注意在UNITY中會提示Color有兩個命名空間都存在需要指定一個,是以我這裡采用的是System.Drawing.Color.Black。

屏蔽處為原文。

之後檢視了一下System.Drawing的版本,在我這裡的是4.X是以就是開頭說的問題,需要添加2.X版本。

在Unity的安裝路徑下D:\unity\2018.4.31f1\Editor\Data\Mono\lib\mono\2.0(因個人而異)找到

關于UNITY中System.Drawing引用失敗的處理方法關于UNITY中System.Drawing引用失敗的處理方法

添加到項目的Plugins檔案夾下即可(沒有就自己建立一個也行)。

問題到此解決,很多原理東西我也不是很明白,這裡關于C#使用EPPlus通路更改Excel的代碼參考一個14年關于EPPlus的說明博文。