我正尝试在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