2010-12-20 103 views
3

我使用的OLE DB驅動程序超過255個字符插入到一個Excel工作表,但我得到的錯誤:Excel無法插入超過255個字符?

Exception Details: System.Data.OleDb.OleDbException: The field is too small to accept the amount of data you attempted to add. Try inserting or pasting less data.

this thread,它是一個Excel的限制似乎。即使是微軟的網站似乎也這樣說here

那麼這是否意味着我不能以編程方式,但我可以手動?因爲我可以在Excel中手動輸入超過255個字符。那麼這是一個Microsoft.ACE.OLEDB.12.0(AccessDatabaseEngine.exe) driver限制?

回答

3

您引用的鏈接大約是256列而不是字符。在256個字符的問題與解決方法如下所述:http://support.microsoft.com/kb/213841

+0

不可以 - 仔細閱讀。在MS網站上,查看第3行。它說: 列寬:255個字符 順便說一句,感謝您的解決方法! – Dan 2010-12-22 04:53:09

4

我發現了一個更有效的方式來處理這個問題,我引用下面

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

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

基本上做的是2個鏈接不使用數據適配器,數據集和參數在Excel中插入行(這從來不適用於我),而是直接使用命令對象從代碼運行SQL插入

在這裏,你所要做的

  1. 聲明廣泛的領域爲備註,而不是字符串或CHAR 什麼 「CREATE TABLE WorkSheetName(FIELD1 INT,場2 MEMO,字段3 ...);」
  2. 構建INSERT語句像 「INSERT INTO WorkSheetName(FIELD1,FIELD2,...)VALUES(1234, '任何長字符串在這裏...',...)」
  3. 聲明一個DbCommand和運行上面的Create table和Insert語句,這裏我使用的是企業庫中的命令obj

    DbCommand dbCommand = m_dbConnection.CreateCommand(); dbCommand.CommandText =「創建表...」; dbCommand.CommandType = CommandType.Text; dbCommand.ExecuteNonQuery();

    dbCommand.CommandText =「Insert Into ...」; dbCommand.CommandType = CommandType.Text; dbCommand.ExecuteNonQuery();

4

我對此問題的解決方法是在列的第一行添加長度超過255個字符的文本。 OleDB會將此列視爲MEMO類型,然後它可以在單元格中插入超過255個字符。

+0

非常感謝!你太棒了!它的作用像一個魅力,我只是隱藏了第二行,它看起來很棒! – nelucon 2016-03-30 21:01:30

相關問題