我正在使用closedXML获取数据表并将其放入Excel文件中。
我正在处理的代码工作,我通过应用程序放置了99%的文件,但我偶尔会收到一个文件错误。 (不,这不是调试问题)
问题必须来自数据,但我对如何解决这个问题感到茫然。
我正在使用的代码是
Public Sub WriteToExcel(dt As DataTable, filePath As String)
Dim workbook = New XLWorkbook()
Dim worksheet = workbook.Worksheets.Add(dt, "Call Validate Export")
Try
workbook.SaveAs(filePath)
Process.Start(filePath)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
保存文件时出现错误
''之间有一个指向右边的小箭头。'',十六进制值0x1A,是无效字符。
当将文件读入数据表时,它读取正常,查看文件我看不到十六进制字符。
正在读入的文件是^分隔的csv文件。
所以,我的问题是如何检查和修复\替换输出中的坏字符,这将允许我100%的时间节省。
答案 0 :(得分:1)
来自XML规范(https://www.w3.org/TR/xml/#charsets)
Char :: =#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] / *任何Unicode字符,不包括代理块,FFFE和FFFF。 * /
这意味着字符#x1A是无效字符。你应该手动删除它。
答案 1 :(得分:0)
@Simon,
看起来无论您尝试导出到Excel,它都包含一些无效字符(箭头指向右侧)。
我收到了类似的错误,经过详细研究,我发现我将DataTable导出到Excel中,其中一个DataTable的单元格值看起来像:
请注意 - >一些评论(这里, - >实际上是单个字符:箭头指向右侧)
我删除了这些字符,现在工作正常。
希望这有帮助。
答案 2 :(得分:0)
https://github.com/ClosedXML/ClosedXML/pull/66是拉取请求,可以解决您的问题。请试一试。