【问题标题】:'', hexadecimal value 0x1A, is an invalid character'',十六进制值 0x1A,是无效字符
【发布时间】:2016-04-20 14:23:56
【问题描述】:

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

【问题讨论】:

  • substitute character,不应包含在普通文本中,也可能无法包含在 Excel 文件的字符串中。尝试遍历您的数据表并删除所有出现的字符。

标签: vb.net closedxml


【解决方案1】:

来自 XML 规范 (https://www.w3.org/TR/xml/#charsets)

字符 ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* 任何 Unicode 字符,不包括代理块、FFFE 和 FFFF。 */

这意味着字符#x1A 是无效字符。您应该手动删除它。

【讨论】:

    【解决方案2】:

    @西蒙,

    看起来像您要导出到 Excel 的任何内容,它包含一些无效字符(指向右侧的箭头)。

    我收到了类似的错误,经过详细查看,我知道我正在将 DataTable 导出到 Excel 中,并且 DataTable 的单元格值之一看起来像:

    请注意 -> 一些注释(这里 -> 实际上是一个字符:指向右侧的箭头)

    我已经删除了这些字符,现在可以正常使用了。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      https://github.com/ClosedXML/ClosedXML/pull/66 是一个可以解决您的问题的拉取请求。请尝试一下。

      【讨论】:

        猜你喜欢
        • 2012-06-17
        • 2016-11-14
        • 2016-03-30
        • 1970-01-01
        • 2016-08-05
        • 2014-01-29
        • 2013-07-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多