1

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

 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];

这似乎工作正常,但是当我遍历数据表以提取值时,我有一个大约 400 个字符的字段,当我从数据表中抓取它时,我只看到前 255 个字符。

有什么办法可以从excel导入这个没有这个字符限制?

4

2 回答 2

1

好的。你坐下吗?

我要告诉你一些你不会喜欢的事情。

您必须编辑注册表才能解决此问题。从我读到的内容来看,即使您使用的是较新的非 Jet 驱动程序,您仍然需要这样做。是的,这太可怕了。不,我不知道他们为什么要这样设计。这在过去的许多用例中让我很伤心。

IMO 唯一真正的解决方案是根本不使用此驱动程序,而是使用 XLSX 文件,这些文件是包装在 ZIP 包中并使用 XLSX 扩展名重命名的 XML 文件。当给定其中一个文件时,您可以使用Office Open XML来读取和操作它,或者您可以使用 SharpZibLib 解压缩包,找到相关的数据文件,然后将其读取为 XML,我有时觉得它更简单,相信它与否。

于 2010-08-08T11:26:44.163 回答
0

嗯,你还在坐吗?所以请继续坐着!

不幸的是,Dave 是对的,但我会更进一步,摆脱 OLEDB 并用强大的第 3 方组件替换它。我可以推荐Spire.XLS。它在各种场景中进行了测试,被认为是最方便和最可靠的一种。

希望这有帮助

于 2010-08-08T11:55:39.793 回答