vb.net で Microsoft.ACE.OLEDB.12.0 プロバイダーを使用して Excel スプレッドシートを作成しようとしていますが、255 文字を超えるフィールドを定義できないようです。
テーブルを作成するための現在のコードは次のとおりです。
create table [table_name] ([column_1] VarChar)
VarChar が 255 文字に制限されていることは理解していますが、それ以上の文字を保持できる代替手段を見つけることができません。
私はこれを試しました:
create table [table_name] ([column_1] LongVarChar)
「フィールド定義の構文エラー」例外が発生しました。
同様に、LongVarWChar、Memo、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 文字を超える文字列を挿入できるものは見つかりませんでした。