Microsoft.ACE.OLEDB.12.0 공급자를 사용하여 Excel 스프레드 시트를 만들려고합니다. net, 나는 255 자 이상을 허용하는 필드를 정의하는 것처럼 보이지 않습니다. 나는 VARCHAR에 255 자로 제한됩니다 이해Microsoft.ACE.OLEDB.12.0을 사용하여 Excel로 내보내기 - 255 자로 제한된 VarChar - 최대 8000 자의 대체 방법이 필요합니다.
create table [table_name] ([column_1] VarChar)
,하지만 난 더 개최 대안을 알아낼 수 없습니까 :
여기에 테이블을 만들 수있는 내 현재 코드입니다.
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 자보다 큰 문자열을 삽입 할 수있는 아무것도 발견하지 못했다.
데이터 유형이 Ace 드라이버에 유효하지 않다고 생각합니다. 나는 LongText를 시도했고, 같은 예외를 던진다. \t 추가 정보 : 필드가 너무 작아 추가하려고 시도한 데이터의 양을 수용 할 수 없습니다. 적은 데이터를 삽입하거나 붙여 넣으십시오. 나는 여기서 아주 간단한 것을 놓치고있는 것처럼 느껴진다. 단지 그것을 이해할 수 없다. – user3613310
테이블을 만든 후 연결을 닫은 다음 데이터를 다시 열면 연결을 다시 열었을 때 데이터 행이 없기 때문에 Ace 드라이버가 열이 텍스트라고 생각하게됩니다. 내가해야만하는 일은 생성과 삽입 사이의 연결을 열어 두는 것이 었으며 매력처럼 작동했습니다. 지도 Jeroen에 감사드립니다. 항상 누군가와 이야기 할 수있게되어서 고맙습니다. – user3613310
@ user3613310이 질문에 대한 답변으로 추가하고 허용되는 답변으로 설정하십시오. 그것은 다른 누군가를 도울 것입니다. 다행히 분류 해 줘서 다행이야! – Jeroen