Я пытаюсь создать электронную таблицу Excel с помощью поставщика Microsoft.ACE.OLEDB.12.0 в vb. net, и я не могу определить поле, которое допускает более 255 символов.Экспорт в Excel с использованием Microsoft.ACE.OLEDB.12.0 - VarChar ограничен 255 символами - требуется более длинная альтернатива для 8000 символов
Вот мой текущий код, чтобы создать таблицу:
create table [table_name] ([column_1] VarChar)
Я понимаю, что VarChar ограничен до 255 символов, но я не могу понять, альтернативу, которая будет содержать больше.
Я попытался это:
create table [table_name] ([column_1] LongVarChar)
и получил «Ошибка синтаксиса в определении поля» исключение.
Аналогично, я пробовал LongVarWChar, Memo, NText (8000), ... с теми же результатами. Какие-либо предложения?
EDIT: Вот моя строка соединения:
"Provider=Microsoft.ACE.OLEDB.12.0;" &
"Data Source=" & destinationFile & ";" &
"Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
EDIT 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
Исключение получает последний вызов ExecuteNonQuery в подписи Button1_Click. Вместо «LongText» я пробовал много разных типов данных, включая группу, которая недействительна для источника данных Excel с использованием механизма Ace. Я ничего не нашел, что позволило мне вставить строку длиной более 255 символов.
Это то, что я предположил, что типы данных недействительны для драйвера Ace. Я пробовал LongText, и это вызывает одно и то же исключение. \t Дополнительная информация: Поле слишком мал, чтобы принять количество данных, которые вы пытались добавить. Попробуйте вставить или вставить меньше данных. Мне кажется, что мне здесь что-то не так просто, просто не могу понять. – user3613310
Ну, как оказалось, закрывая соединение после создания таблицы, а затем снова открывая его для вставки данных, заставляет драйвер Ace думать, что столбец является текстом, поскольку нет никаких датаров, присутствующих при повторном открытии соединения. Все, что мне нужно было сделать, это поддерживать связь между созданием и вставкой, и это работало как шарм. Спасибо за руководство Jeroen, я всегда ценю возможность поговорить с кем-то. – user3613310
@ user3613310 добавьте это как ответ на этот вопрос и установите его на принятый ответ. Это поможет кому-то еще. Рад, что вы разобрались! – Jeroen