Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio 2015打破了EPPlus颜色_C#_Visual Studio_Epplus - Fatal编程技术网

C# Visual Studio 2015打破了EPPlus颜色

C# Visual Studio 2015打破了EPPlus颜色,c#,visual-studio,epplus,C#,Visual Studio,Epplus,我花了好几个小时对此大惊小怪,直到我把范围缩小到VS 2015。这在VS 2013中运行良好: myWorksheet.Cells[1, 1].Style.Fill.BackgroundColor.SetColor(Color.LightGray); 但在VS 2015中,虽然它编译得很好,但当我运行解决方案时,它会抛出一个异常: Color.LightGray={System.NullReferenceException:对象引用未设置为对象的实例 在Microsoft.Win32.Syst

我花了好几个小时对此大惊小怪,直到我把范围缩小到VS 2015。这在VS 2013中运行良好:

myWorksheet.Cells[1, 1].Style.Fill.BackgroundColor.SetColor(Color.LightGray);
但在VS 2015中,虽然它编译得很好,但当我运行解决方案时,它会抛出一个异常:

Color.LightGray={System.NullReferenceException:对象引用未设置为对象的实例
在Microsoft.Win32.SystemEvents.AddEventHandler中(对象键,委托值
在Microsoft.Win32.SystemEvents.add_UserPreferenceChanging(UserPreferenceChangingEventH


是否有其他方法可以指定颜色?

问题不在于VS 2015。如果我这样做:

using (var excel = new ExcelPackage())
{
    var ws = excel.Workbook.Worksheets.Add("sheet1");
    ws.Cells[1, 2].Value = "light grey";
    ws.Cells[1, 2].Style.Fill.PatternType = ExcelFillStyle.Solid;
    ws.Cells[1, 2].Style.Fill.BackgroundColor.SetColor(Color.LightGray);

    excel.SaveAs(new System.IO.FileInfo(@"C:\temp\temp.xlsx"));
}
然后我得到了预期的输出:

这可能引发异常的几个原因:

  • 您是否已首先将填充的
    .PatternType
    属性设置为
    ExcelFillStyle.Solid
  • 您是否参考了System.Drawing以获得正确的目标框架?(发生在VS升级之后,这让我怀疑您的参考是否针对.NET 4.5,但您的项目针对的是更高版本?)

否。您必须发布显示SystemEvents.UserPreferenceChangeing事件可能与之相关的代码。这肯定是一个非常臭名昭著的事件,在工作线程上创建UI时,会很难返回字节。不确定您建议我发布显示SystemEvents.UserPreferenceChangeing事件如何相关的代码是什么意思t、 请参阅下面Stewart的代码片段。仅此而已。如果我创建一个新的控制台解决方案并仅添加该代码,我仍然会收到空引用异常。这是我用VS 2015创建的一个新解决方案。只有语法是从类似项目复制粘贴的,框架中只列出了一个版本的System.Drawing(4.5.2)这就是版本4.0.30319.34211。也许如果我指向.NET 4.5.0?我将解决方案中的所有项目更新为指向.NET 4.5,并在上与Assembly Explorer确认,我引用的是同一个System.Drawing版本。仍然会出现异常。我只是为了咯咯笑,逐字复制了您的代码,但没有系统。Drawing reference.Red squigly暗示我需要添加对System.Drawing 2.0的引用,但当a允许它自动为我添加引用时,它添加了4.0。我在运行项目时收到相同的空引用异常。今晚的最后一个注意事项。我使用VS 2013创建了一个控制台应用程序,添加了对EPPlus和System.Drawing的引用,并运行了解决方案。Worked很好。然后我用VS 2015打开解决方案并尝试运行它,它在以下位置抛出空引用异常:ws.Cells[1,2]。Style.Fill.BackgroundColor.SetColor(Color.LightGray);唯一比这种神秘感更让我讨厌的是,这种神秘感会在我请求帮助后得到解决。重新启动电脑并运行了您的示例,它成功了。谢谢Stewart。