You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用FastDBF库读取DBF文件导出行数与Excel显示行数不一致问题

排查方向

  • 已删除记录过滤规则差异
    FastDBF默认读取时会自动跳过DBF中被标记为删除状态的记录,而MS Excel打开DBF文件时默认会展示所有包括标记为删除的记录,这是两类工具行数不一致的最常见原因。你可以查看DbfRecord类是否提供IsDeleted属性,或者查阅FastDBF的配置项,确认是否有开关可以关闭已删除记录的自动过滤逻辑。
  • 读取异常提前终止循环
    你现有代码中odbf.Read(i, orec)返回false时直接执行break跳出循环,如果中间某条记录因为编码不匹配、格式损坏等问题读取失败,会直接终止后续所有记录的读取,而非跳过单条错误记录。你可以将break替换为continue测试,统计最终导出的总行数,同时可以添加日志确认Read方法首次返回false时的循环变量i值,确认是否未遍历完所有记录就提前终止。
  • DBF文件头记录数不准确
    部分非标准生成的DBF文件,头部存储的RecordCount字段值和实际物理存储的记录数不一致,Excel读取时会遍历整个文件统计实际记录数,而你的循环上限是odbf.Header.RecordCount,建议先打印该字段的实际值,确认和Excel的28307是否一致。
  • 编码匹配问题
    你打开DBF时使用的是1252编码,如果该DBF是中文环境下生成的(比如GBK、GB2312编码),特殊字符会导致记录解析失败,你可以尝试替换为DBF实际对应的编码读取测试。
  • 关联备注文件缺失
    如果该DBF包含备注型字段,需要同目录下存在对应的.FPT/.DBT备注文件,若文件缺失或损坏,FastDBF读取到备注字段所在记录时会读取失败,导致提前终止。
  • 代码语法疏漏检查
    你贴出的代码中odbf.Open(Path.Combine(this.pathWithFile), FileMode.Open)行末尾缺少分号,确认是粘贴疏漏还是实际代码存在语法问题,如果是实际代码问题会导致逻辑执行异常。

内容的提问来源于stack exchange,提问作者Nathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:24:04