该字段太小,无法接受您尝试添加的数据量。有没有人从ADO.NET得到这个错误?

时间:2011-05-12 20:51:48

标签: vb.net excel ado.net excel-2007

从数据集更新Excel文件似乎工作正常。但如果我的文字长度超过255个字符,那么我会得到上面的错误。有没有其他人得到这样的错误?你是如何解决的?我已经在这个工作了几个小时,我没有得到任何地方。我已经尝试搞乱连接字符串并更改注册表设置,但没有运气。

2 个答案:

答案 0 :(得分:7)

没有简单的解决方法。事实上我不得不使用各种各样的黑客。

我尝试在长度为262个字符的Excel字段中插入一些文本并出现此错误:该字段太小而无法接受您尝试添加的数据量。尝试插入或粘贴较少的数据。

这个技巧/黑客工作很容易,因为我已经创建了Excel文档并且它是空的(即除了标题之外没有行)。所以在Excel中,我将262个字符的文本(可以是255以上的任何内容)粘贴到第一行的单元格中,这些单元格可以接收大文本。之后,我运行ADO.NET(通过VB.NET)并将数据通过数据集(ds.Update)推送到Excel,所有数据都很好地完成,没有任何错误。

除非有人知道在Excel或代码隐藏方法中强制Excel单元格成为所谓的备注字段,否则这是唯一有效的方法。我尝试使用注册表,但它对我不起作用。

答案 1 :(得分:0)

我使用了OleDb,并且使用了dotnetN00b的提示,我设法做到了。

        string con = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\temp\\test.xls;Extended Properties=""Excel 8.0;HDR=YES;""");           

        var cnn = new OleDbConnection(con);
        cnn.Open();

        string createCom = "CREATE TABLE [Sheet1] ( [A] string, [B] Memo);";
        string insertCom = "INSERT INTO [Sheet1] VALUES('This can be max 255', 'This one can be realy looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong!');";

        OleDbCommand cmd = new OleDbCommand(createCom, cnn);
        cmd.ExecuteNonQuery();

        cmd = new OleDbCommand(insertCom, cnn);
        cmd.ExecuteNonQuery();

        cnn.Close();