vbでMicrosoft.ACE.OLEDB.12.0プロバイダを使用してExcelスプレッドシートを作成しようとしています。ネット、私は255文字以上を許可するフィールドを定義するように見えることはできません。ここでMicrosoft.ACE.OLEDB.12.0を使用してExcelにエクスポート - 255文字に制限されたVarChar - 最大8000文字の代替代替が必要
は、テーブルを作成するために、私の現在のコードです:
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"";"
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
例外は、Button1_Clickサブコマンドの最後のExecuteNonQuery呼び出しでスローされます。 「LongText」の代わりに、Aceエンジンを使用するExcelデータソースには有効ではない束など、さまざまな種類のデータを試しました。 255文字以上の文字列を挿入できるものは何も見つかりませんでした。
これは私が想定していたことですが、そのデータ型はAceドライバでは無効です。私はLongTextを試しました、そして、それは同じ例外をスローします。 \t 追加情報:このフィールドは、追加しようとしたデータ量を受け入れるには小さすぎます。少ないデータを挿入または貼り付けてみてください。私はここでかなり単純なものを見逃しているように感じます。ただそれを理解できません。 – user3613310
テーブルが作成された後に接続を閉じると、データを挿入するために再度開くと、Aceドライバは列がテキストであると考えるようになります。私がしなければならなかったことは、作成と挿入の間の接続を開いたままにしておくことでした。ガイダンスのおかげで、ジェーレン、私はいつも誰かと何かを話すことができて感謝しています。 – user3613310
@ user3613310これをこの質問の回答として追加し、それを受け入れられた回答に設定します。それは他の誰かを助けるでしょう。あなたがそれを整理してうれしい! – Jeroen