asp.net - 从 Excel 导入 - 忽略非数字值

标签 asp.net import-from-excel

我有从指定格式的 Excel 工作表导入的代码。在其中一列中,大多数数据是数字,但也存在非数字值。由于某种原因,导入代码会忽略非数字值。

连接字符串如下所示:

    Dim FileConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=" & Path & "\" & _
    Filename & ";Extended Properties=" & _
    """Excel 12.0;HDR=YES;IMEX=1;"""

实际的导入代码类似于:
    Dim Factory As DbProviderFactory = _
    DbProviderFactories.GetFactory("System.Data.OleDb")

    Dim Adapter As DbDataAdapter = Factory.CreateDataAdapter(), _
    DataObject As New DataSet

    Using Connection As DbConnection = Factory.CreateConnection
        Connection.ConnectionString = FileConnectionString

        Using Command As DbCommand = Connection.CreateCommand

            Command.CommandText = _
            "SELECT [Column1], [Column2]" & _
            "FROM [Sheet1$]"

            Adapter.SelectCommand = Command

            Adapter.Fill(DataObject)

            ...

请注意,我已启用 IMEX = 1 通知 Excel 将出现混合数据。这似乎没有帮助。知道发生了什么吗?

最佳答案

我注意到的是,引擎从列中的第一个值推断列的数据类型。

因此,如果您的第一个值是数字,则引擎会将列假定为数字,并且在尝试将 alpha 值转换为数字时将失败。

我通常做的是在 Excel 上的所有值后附加一个下划线,然后在 SQL 或 DataSet 上,替换第一个下划线。希望它会有所帮助

关于asp.net - 从 Excel 导入 - 忽略非数字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1448440/

相关文章:

当用户未经身份验证时,ASP.NET 会覆盖重定向中的默认 returnto 参数

.net - 使用 Masterpage 在 ASP.Net 页面上进行 javascript 验证的最佳方法是什么?

c# - AuthorizationCodeReceivedNotification 未将对象引用设置为对象的实例

sql - 如何将Excel电子表格中的数据导出到Sql Server 2008表

database - 如何使用delphi将Excel文件导入Access数据库

c# - 字符串在 C# 中不被识别为有效的日期时间

c++ - 将索引数组排序为主数组

asp.net - ASP.Net 4.0 可以设置为使用 ASP.Net 2.0 的根站点的子应用程序/虚拟目录吗?

c# - 在 GridView 中启用和禁用按钮

c# - 立即从 DataTable 中删除行,而无需循环,其中列具有 Null 值