【问题标题】:C# extract formatted text from Excel through OLEDBC#通过OLEDB从Excel中提取格式化文本
【发布时间】:2012-10-28 06:11:39
【问题描述】:

我正在从具有格式化文本的大型 excel 文件中读取数据。我通过oleDBConnectionGetOleDbSchemaTable将数据提取到DataTable对象。但提取的数据不包含任何格式化信息。

我的要求是,我只需要提取非删除线文本。

我在阅读时没有任何问题,一切都很好。但是我的提取应该基于excel中的文本格式,我无法找到解决方案。

connectionString中要添加的内容如下:

connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + "; Extended Properties=\"Excel 12.0 Xml;HDR=YES;Mode=Read;ReadOnly=True;\"";

约束:

  1. 使用 OleDBConnection - 无互操作

  2. 读取数据表对象

【问题讨论】:

  • Oledb 只会读取单元格值,而不是这些值的格式化版本。

标签: c# excel datatable connection-string oledb


【解决方案1】:

据我所知,仅使用 ACE 驱动程序是无法做到这一点的。话虽如此,如果限制被解除,这是使用的工具: http://closedxml.codeplex.com/

【讨论】:

  • 感谢您的信息!限制是因为数据表中的数据稍后将更新到MS SQL Server DB。数据表数据被 dataGrid 用于显示目的,也用于写入文本文件。
  • 我了解,但您可以使用 ClosedXML API 实现相同的目标。它不像使用 OLEDB 抓取数据那样简洁,但它会以您正在寻找的方式完成工作。
【解决方案2】:

您应该转换您的方法以使用开放 XML。它是 .NET,而不是 COM

信息:http://support.microsoft.com/kb/840817

下载SDK:http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=5124

【讨论】:

    【解决方案3】:

    如果您不想使用 Interop,则必须使用“Open Xml”来获取格式信息。没有其他选择。我提到的 Biff 只是为了正确性,但是您的连接字符串清楚地表明了 XML,所以 Biff 不在了。

    一旦通过“Open Xml”打开,您就可以像 DataTable 一样“模拟”读取范围/表格/单元格。

    根据您的限制,只有 #1 会为您提供格式信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多