使用closedXML C#库,如何在尝试保存时找出导致此错误的数据

leo*_*ora 6 c# excel closedxml

我有一个使用ClosedXML导出到Excel的C#应用​​程序.它工作正常但只是遇到了一个问题,当我点击:

  var ms = new MemoryStream();
  workbook.SaveAs(ms);
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:

' ', hexadecimal value 0x0B, is an invalid character
Run Code Online (Sandbox Code Playgroud)

它肯定是数据相关的,因为我看它确实工作正常,但其他数据导致这个问题.

我怎样才能找出造成问题的角色?此外,一旦我弄清楚了,找到这个角色在我的数据中的哪个位置的最佳方法是什么?

Rai*_*ica 6

由于您在ClosedXML表中放入的数据/字符串中包含无效字符,因此必须找到它们并将其取出.

最简单的解决方案是添加

.Replace((0x0B).ToString(), " ")
Run Code Online (Sandbox Code Playgroud)

删除所有字符串以删除垂直制表符并用空格替换它们.


das*_*ght 6

由于ClosedXML是一个开源项目,因此跟踪错误的最简单方法是从*构建它,然后在调试模式下针对库运行代码.

一旦看到完整的堆栈跟踪,您就应该能够识别出错的位置.很有可能它是ClosedXML项目使用Microsoft XML库的方式中的错误,因为您提到的错误是由ClosedXML项目之外的库报告的.


*我下载了项目,并尝试构建它.closedxml-79843.zip包中的所有内容都正确构建.