2012-11-08 52 views
1

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

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

我在阅读时没有任何问题,一切都很完美。但我的提取应该基于文本格式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. 阅读中DataTable对象

+3

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

回答

1

据我所知,您不能仅使用ACE驱动程序来完成此操作。这就是说,如果限制被解除,这是使用的工具: http://closedxml.codeplex.com/

+0

感谢您的信息!限制是因为数据表中的数据将在以后更新为MS SQL Server数据库。 dataGrid使用数据表数据进行显示,也用于写入文本文件。 – KbManu

+0

我明白,但您可以通过ClosedXML API实现相同的目标。它不像使用OLEDB抓取数据那么简单,但它会以您所期待的方式完成工作。 – Hardrada

0

您必须使用“开放XML”去格式化信息,如果您不想使用互操作。没有其他选择。我只提到Biff的正确性,但是你的连接字符串清楚地表明了XML,所以Biff已经出来了。

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

有了你的约束,只有#1会给你格式化信息。