使用 c# 读取一个并更新其他 Excel

Reading one & Update some other Excel with c#

我正在开发一个小型 winform 实用程序来读取一个 excel 并更新另一个 excel。

我正在尝试使用 OLEDB 读取源 excel 文件(其中有几个隐藏的列和行)。我能够做到这一点并在 Datatable 中获得输出,但面临以下几个挑战:

  1. Sheet 包含带有数字、日期和字符串的列。通过 OLEDB 读取后,所有数字都会转换为日期,反之亦然。我不希望这发生。我已经阅读了几种解决方案,例如在连接字符串中将 IMEX 设置为 1,但没有任何效果。我该如何解决?
  2. 我只想返回活动区域。目前,我看到这么多空白 columns/rows。我必须手动处理它。
  3. 我尝试根据列值之一过滤 excel 输出,但没有成功。
  4. 有什么方法可以丢弃隐藏的列吗?
  5. 加载数据表后,我看到列显示为 F1、F2.. 等等。是的,来源 excel 的列从第 4 行开始。如何在数据表中保留这些名称?

阅读源代码 excel 后,我必须 运行 一些逻辑并逐行甚至逐列更新其他 excel。我也必须保留格式。什么最好更新其他 excel?

  1. 你想要做的是使用 schema.ini 文件,这里是一个示例:

[ABC_20171128.csv]
Format = Delimited(|)
CharacterSet=ANSI
ColNameHeader=True
DateTimeFormat=dd MM yyyy hh:nn:ss

Col1 = Date DateTime
Col2 = AccountID Text
Col3 = SubAccount Text
Col4 = MarketCode Text
Col5 = SecurityCode Text
Col6 = Units Single

将 schema.ini 文件放在与您正在阅读的文件相同的目录中。

更多信息:Missing column of Dates in CSV file using Schema.ini file


  1. 是手动处理它或不使用 OleDB 使用 Interop。

  2. MCVE 有一个新问题。

  3. 您需要互操作来确定隐藏了哪些列。或者你会知道哪些是隐藏的要丢弃。

  4. Schema.ini 应该可以解决第 headers 列的问题。