将excel表转换为C#DataTable裁剪掉一些数据

我正在使用下面的代码将工作表上的一组Excel数据转换为C#dataTable:

var connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + _filename + ";Extended Properties=\"Excel 12.0;HDR=YES\";"); var adapter = new OleDbDataAdapter("SELECT * FROM [owssvr$]", connection); connection.Open(); var ds = new DataSet(); adapter.Fill(ds); connection.Close(); return ds.Tables[0]; 

这似乎工作正常,但是当我循环通过dataTable提取值,我有一个字段是约400个字符,当我从数据表中抓住它,我只看到第255个字符。

有什么办法,我可以从Excel导入这个字符限制?

好。 你坐下吗?

我要告诉你一些你不会喜欢的东西。

您必须编辑registry才能解决此问题。 而且从我读过的内容来看,即使使用更新的非Jet驱动程序,仍然需要这样做。 是的,这太可怕了。 不,我不知道他们为什么这样devise。 这在过去已经烧毁了我之前的一些用例。

唯一真正的解决办法是根本不使用这个驱动程序,而是使用XLSX文件,它们是封装在ZIP包中的XML文件,并用XLSX扩展名重命名。 当给定这些文件之一时,您可以使用Office Open XML来读取和操作它,或者您可以使用SharpZibLib解压缩包,find相关的数据文件并将其读取为XML,有时候我会认为它比较简单它与否。

那你还坐着吗? 所以请继续坐!

不幸的是,戴夫是正确的,但我会走得更远,将摆脱OLEDB,并取而代之的是一个强大的第三方组件。 我可以推荐Spire.XLS 。 它在各种情况下进行了testing,被发现是最方便和最可靠的。

希望这有助于