【问题标题】:Excel unable to insert more than 255 chars?Excel 无法插入超过 255 个字符?
【发布时间】:2010-12-20 09:35:13
【问题描述】:

我正在使用 OLE DB 驱动程序在 Excel 工作表中插入超过 255 个字符,但出现错误:

异常详细信息:System.Data.OleDb.OleDbException:该字段太小,无法接受您尝试添加的数据量。尝试插入或粘贴更少的数据。

this thread 看来,这是 Excel 的限制。甚至微软网站似乎也这么说here

这是否意味着我不能以编程方式,但我可以手动?因为我在 Excel 中手动输入时可以输入超过 255 个字符。那么这是Microsoft.ACE.OLEDB.12.0(AccessDatabaseEngine.exe) driver 限制吗?

【问题讨论】:

    标签: excel export-to-excel ole


    【解决方案1】:

    我对这个问题的解决方法是在列的第一行添加一个长度超过 255 个字符的文本。 OleDB 会将此列视为 MEMO 类型,然后它可以在一个单元格中插入超过 255 个字符。

    【讨论】:

    • 非常感谢!你太棒了!它就像一个魅力,我刚刚隐藏了第二行,它看起来很棒!
    【解决方案2】:

    我找到了一种更有效的方法来处理这个问题,我的参考是下面的 2 个链接

    http://support.microsoft.com/kb/316934

    http://www.codeproject.com/Articles/37055/Working-with-MS-Excel-xls-xlsx-Using-MDAC-and-Oled

    基本上不使用数据适配器、数据集和参数在 Excel 中插入行(这对我来说从来没有用过)而是直接使用命令对象从代码中运行 SQL 插入

    这是你必须做的事情

    1. 将宽字段声明为 MEMO 而不是字符串或 CHAR "CREATE TABLE WorkSheetName (field1 INT, field2 MEMO, field3 ...);"
    2. 构建插入语句,如 "INSERT INTO WorkSheetName (field1, field2, ...) VALUES (1234, 'Any long string here...', ...)"
    3. 声明一个 DbCommand 来运行上面的 Create table 和 Insert 语句,这里我使用的是来自企业库的命令 obj

      DbCommand dbCommand = m_dbConnection.CreateCommand(); dbCommand.CommandText = "创建表..."; dbCommand.CommandType = CommandType.Text; dbCommand.ExecuteNonQuery();

      dbCommand.CommandText = "插入..."; dbCommand.CommandType = CommandType.Text; dbCommand.ExecuteNonQuery();

    【讨论】:

    • 这对我不起作用。幸运的是,CREATE TABLE 语句创建了一个同名的命名范围(仅没有 $)。如果我INSERT INTO 范围,那么它可以工作。
    【解决方案3】:

    您所指的链接大约有 256 列而不是字符。此处描述了 256 个字符的问题,并提供了解决方法:http://support.microsoft.com/kb/213841

    【讨论】:

    • 不 - 请仔细阅读。在 MS 站点上,请参见第 3 行。它说:列宽:255 个字符顺便说一句,谢谢你的解决方法!
    • 在 SO 中强烈建议不要仅链接答案 - 有充分的理由。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2020-02-13
    相关资源
    最近更新 更多