'',十六进制值0x1A,是无效字符

时间:2016-04-20 14:23:56

标签: vb.net closedxml

我正在使用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%的时间节省。

3 个答案:

答案 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是拉取请求,可以解决您的问题。请试一试。