我正嘗試在vb中使用Microsoft.ACE.OLEDB.12.0提供程序創建Excel電子表格。淨,我似乎無法定義一個字段,允許超過255個字符。使用Microsoft.ACE.OLEDB.12.0導出到Excel - VarChar限制爲255個字符 - 需要更長的備選方案,最多8000個字符
這裏是我當前的代碼來創建表:
create table [table_name] ([column_1] VarChar)
我明白的VarChar被限制在255個字符,但我無法弄清楚,將舉行更多的選擇。
我已經試過這樣:
create table [table_name] ([column_1] LongVarChar)
,並得到了「字段定義語法錯誤」的異常。
同樣,我試過LongVarWChar,備忘錄,NText(8000),...具有相同的結果。有什麼建議麼?
編輯:這是我的連接字符串:
"Provider=Microsoft.ACE.OLEDB.12.0;" &
"Data Source=" & destinationFile & ";" &
"Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
編輯2:這裏是我想要做的
進口System.Data.OleDb 進口System.Text的基本思路
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
dim destinationFile = "c:\users\dell\desktop\test\test_" & Now.ToString("yyyyMMdd_HHmmssfffff") & ".xlsx"
Dim oleDbConnString =
"Provider=Microsoft.ACE.OLEDB.12.0;" &
"Data Source=" & destinationFile & ";" &
"Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
Dim oleDbConn as New OleDbConnection(oleDbConnString)
Dim oleDbComm as New OleDbCommand("create table Sheet1 (column_1 LongText);", oleDbConn)
oleDbConn.Open
oleDbComm.ExecuteNonQuery
oleDbConn.Close
Dim bigText as New StringBuilder()
For i = 0 to 255
bigText.Append(".")
Next
oleDbComm.CommandText = "insert into Sheet1(column_1) values ('" & bigText.ToString & "');"
oleDbConn.Open
oleDbComm.ExecuteNonQuery
oleDbConn.Close
Process.Start(destinationFile)
End Sub
End Class
在Button1_Click子項的最後一個ExecuteNonQuery調用中拋出異常。代替「LongText」,我嘗試了許多不同的數據類型,包括一些對於使用Ace引擎的Excel數據源無效的數據類型。我發現沒有任何東西允許我插入大於255個字符的字符串。
這就是我所假設的,數據類型不適用於Ace驅動程序。我嘗試了LongText,並且拋出了相同的異常。 \t 附加信息:該字段太小,無法接受您嘗試添加的數據量。嘗試插入或粘貼更少的數據。我覺得我在這裏錯過了很簡單的東西,只是無法弄清楚。 – user3613310
事實證明,在創建表之後關閉連接,然後重新打開以插入數據,導致Ace驅動程序認爲該列是文本,因爲當它重新打開連接時沒有任何數據行存在。我所要做的只是保持創建和插入之間的連接,並像魅力一樣工作。感謝Jeroen的指導,我總是喜歡能夠與某人交談。 – user3613310
@ user3613310添加作爲這個問題的答案,並將其設置爲接受的答案。它會幫助別人。很高興你把事情解決了! – Jeroen