为什么使用 OleDb 导入 Excel 时会忽略第一个空行

2024-02-24

使用.Net 的 OleDb,我尝试导入一个 Excel 表,其中第一行可以为空。我想保留 DataTable 中的空行,以便稍后能够将单元格映射到 Excel 样式的单元格名称“A1、A2、...”。但无论我做什么,第一行都会被删除。

Excel 文件如下所示:

 -   -   -
 ABC XY  ZZ
 1   2   3
 4   4   5

其中“-”是空单元格。 (我对导入格式没有影响。)

简化代码:

        string cnnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"file.xls\";Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\"";
        string mySheet = "Sheet1$";

        OleDbConnection connection = new OleDbConnection(cnnStr);
        DataSet Contents = new DataSet();
        using (OleDbDataAdapter adapter = new OleDbDataAdapter("select * from [" + mySheet + "]", connection))
        {
            adapter.Fill(Contents);
        }

        Console.WriteLine(Contents.Tables[0].Rows.Count); // prints: 3
        Console.WriteLine(Contents.Tables[0].Rows[0].ItemArray[0]); // prints: ABC

知道如何保留那个空行吗?

ps:我发现了从 Excel 读取时如何计算空行数 https://stackoverflow.com/questions/7317665/how-to-count-empty-rows-when-reading-from-excel但无法重现它。


该问题似乎与 OLEDB 提供程序的 TypeGuessRows 功能有关。简而言之,Excel 列中的数据可以是任何类型。 OLEDB 提供程序通过扫描工作表的前 8 行来猜测数据类型,以确定多数类型 - 样本中值数量最多的数据类型。任何不属于多数类型的东西都会被丢弃。

请参阅此博客文章以获取更详细的解释。 http://www.processinginfinity.com/mystery-of-the-missing-cell-value

还有这个MS 知识库文章 http://support.microsoft.com/kb/281517讨论行为。

(跳至 TypeGuessRows 行为的“解决方法”部分)

作为测试,我创建了一个与您发布的示例类似的文件,但是将所有列格式化为文本并保存文件。运行您发布的代码,我可以看到返回 4 行,其中第一行是空字符串。

您可能还想尝试修改注册表,看看将 TypeGuessRows 设置更改为 0(扫描文件中的所有数据以确定每列的数据类型)是否有助于返回第一个空白行。我的预感是这不会有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用 OleDb 导入 Excel 时会忽略第一个空行 的相关文章

随机推荐

  • 如何将 GitHub 问题与分支关联?

    我在 gh 上提交的几乎每个问题都涉及特定分支上的代码 github 是否有任何机制将问题链接到分支 我需要按分支过滤问题 这样我就不会被其他功能分支中的问题分散注意力 有没有办法做到这一点 我知道可以 滥用 使用里程碑来达到类似的效果 但
  • 当ng-model在控制器中初始化时,Angularjs select ng-change不会被触发

    我有我的选择 就像这样
  • W/ManagedChannelImpl:[{0}] 无法解析名称。状态={1}

    我正在开发 Android 应用程序 并且实现了 FireStore 现在我不断收到此错误 它也会重复 W ManagedChannelImpl 0 Failed to resolve name status 1 有人知道这是什么吗 您的应
  • mvc 3 razor 使用 jquery 调用服务器端函数

    我正在使用此代码从服务器获取部分视图 并将其放入 div 中 ajax type POST url MyControler MyAction success function result partialView html result e
  • 存储过程事务

    我以前从未使用过事务 提交和回滚 现在我需要使用一个 我已经在网上检查了一些示例 以确保我实际上正确使用了它 但我仍然不确定我的编码是否正确 我希望有人能够审查并建议我这是否正确 基本上我有两个数据库用于一个应用程序 一种是存档 意味着不再
  • 从字符串中检索图像 url

    我正在解析一个 xml 文件 我可以 NSLog 解析 但我的问题是我需要从这个 字符串 获取图像 url p a href http www bubblesurprise com WPRESS APP wp content uploads
  • 通过 XML 设置 AdMob 横幅以匹配父级宽度

    我正在尝试设置 AdMob 横幅广告以匹配其父宽度 我尝试作为示例
  • 接口如何使单元测试和模拟变得更容易?

    人们常说 接口使模拟和单元测试变得更加容易 接口如何帮助解决这个问题 这是接口的本质提供许多实现 从而启用模拟 特别是在集成测试中 您可以提供依赖系统模型的版本 例如 Web 服务 而不是实际调用一个依赖系统甚至一个模块 或者一个复杂且难以
  • 带 LDAP 的 BitNami GitLab Stack 5.1.0-2

    I am 配置 https github com gitlabhq gitlabhq blob master doc install installation md ldap authenticationLDAP 用于BitNami Git
  • 如何在本地部署ssrs?

    如何在本地计算机上部署 ssrs 我正在使用 ssrs 2005 我不确定 2005 年的情况 但在 2008 年 您右键单击项目 gt 属性并更改以下内容 目标数据集文件夹 文件夹名称 DataSet目标数据源文件夹 文件夹名称 数据源目
  • org.apache.axis2.AxisFault:在 Web 服务中传递对象数组时,未知类型无法序列化

    我创建了一个以 DTO 作为参数的 Web 服务 DTO 包含一个对象数组 我已经生成了 WSDL 框架和客户端 如果我传递字符串数组 我会尝试调用 Web 服务 Serialized array new String a n 效果很好 现
  • 如何在 WordPress 多站点中显示最近的全局帖子

    我在 ayp no 上运行一个 wordpress 多站点 我正在尝试找出一种方法来呈现所有子站点的徽标和所有博客的最新帖子 我知道有一个 wpmudev 高级插件 但我希望有一些编码我可以自己做 好吧 显然不是我自己 但至少在这里问一下并
  • 在 Swift 中更改 UITabBar selectedItem

    如何以编程方式更改 UITabBar 中的选定项目 Swift 3 及更高版本 从 Swift 3 开始 您还可以使用 tabBarController selectedIndex 0 or any other existing index
  • 优雅地崩溃内核

    后续 CUDA 停止所有其他线程 https stackoverflow com questions 3735786 cuda stop all other threads 我正在寻找一种在发生 不良情况 时退出内核的方法 编程手册说 NV
  • graphviz 中的子图布局

    我有显示两个子图的代码 graph rankdir LR subgraph cluster01 label t 0 a0 label A a1 label B a2 label C a5 label E a0 a1 a1 a2 a2 a0
  • 使用自定义表单替换部分 Outlook 客户端窗口

    我正在为 Outlook 客户端开发 VSTO 应用程序 我正在尝试在 Outlook 客户端窗口的部分中打开我的表单 该部分在下图中以红色突出显示 我认为我不能使用表单区域 因为它们替换了单个项目的视图 所以基本上我想做的是当我单击工具栏
  • 分段读取 CSV 文件的策略?

    我的计算机上有一个中等大小的文件 4GB CSV 但没有足够的 RAM 来读取该文件 64 位 Windows 上为 8GB 在过去 我只是将其加载到集群节点上并将其读入 但我的新集群似乎任意将进程限制为 4GB RAM 尽管每台机器的硬件
  • 提交到 App Store 的应用程序和应用程序更新必须使用 Xcode 5.1.1 或更高版本以及 iOS 7 SDK 构建

    今天使用新的 iTunes 连接网页时出现此错误 我的xCode版本是 我的SDK是 我之前提交的内容是使用旧网页进行的 现在新网页不断抱怨我的新版本出现此错误 有人看到同样的问题吗 好的 这可能是他们网站的问题 现在刚刚尝试使用清理后的版
  • Android-Studio-1.2.RC 关于 Square 的 Okio 库参考的 Proguard 警告

    使用 Android Studio 1 2 RC 我在 gradle 中启用了 proguard minifyEnabled true and added these rules to my proguard rules pro dontw
  • 为什么使用 OleDb 导入 Excel 时会忽略第一个空行

    使用 Net 的 OleDb 我尝试导入一个 Excel 表 其中第一行可以为空 我想保留 DataTable 中的空行 以便稍后能够将单元格映射到 Excel 样式的单元格名称 A1 A2 但无论我做什么 第一行都会被删除 Excel 文