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