今天在使用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(因个人而异)找到
添加到项目的Plugins文件夹下即可(没有就自己新建一个也行)。
问题到此解决,很多原理东西我也不是很明白,这里关于C#使用EPPlus访问更改Excel的代码参考一个14年关于EPPlus的说明博文。