2010-12-20 8 views
3

나는 엑셀 시트에 255 개 이상의 문자를 삽입하는 OLE DB 드라이버를 사용하고 있지만 오류 얻을 :Excel에서 255자를 초과하여 삽입 할 수 없습니까?

Exception Details: System.Data.OleDb.OleDbException: The field is too small to accept the amount of data you attempted to add. Try inserting or pasting less data.

그것은 엑셀 제한의 this thread에서 같다을. Microsoft 사이트조차도 here라고 할 수 있습니다.

프로그래밍 방식으로는 불가능하지만 수동으로 할 수 있습니까? Excel에서 수동으로 입력 할 때 255 자 이상을 입력 할 수 있기 때문입니다. 그렇다면 Microsoft.ACE.OLEDB.12.0(AccessDatabaseEngine.exe) driver 제한이 있습니까?

답변

3

참조 할 링크는 약 256 열이며 문자가 아닙니다. 256 자 문제가 해결 여기 설명 :이 문제를 처리 할 수있는보다 효율적인 방법을 발견 http://support.microsoft.com/kb/213841

+0

아니요 - 신중하게 읽으십시오. MS 사이트에서 3 행을 참조하십시오. 그것은 말합니다 : 열 너비 : 255 자 Btw, 회피에 감사드립니다! – Dan

4

, 내 참조

http://support.microsoft.com/kb/316934

http://www.codeproject.com/Articles/37055/Working-with-MS-Excel-xls-xlsx-Using-MDAC-and-Oled

기본적 할 아래 두 링크가 있습니다 Excel에서 행을 삽입하기 위해 데이터 어댑터와 데이터 세트, 매개 변수를 사용하지 않습니다 (대신 절대로 작동하지 않습니다). 명령 객체를 사용하여 직접 코드에서 SQL insert를 실행하십시오.

당신이

  1. 대신 문자열 또는 CHAR 의 메모로 넓은 시야를 선언해야 할 일 여기 1,363,210

    "표 워크 시트 명 (필드 1의 INT, FIELD2 메모, FIELD3 ...) CREATE;"

  2. 실행할 DbCommand 선언 "(필드 1, FIELD2, ...) VALUES (1234, '여기에 긴 문자열 ...', ...) 워크 시트 명 INTO INSERT" 같은 삽입 문을 구축 위의 Create 테이블과 Insert 문은 여기에서 엔터프라이즈 라이브러리의 obj 명령을 사용하고 있습니다.

    DbCommand dbCommand = m_dbConnection.CreateCommand(); dbCommand.CommandText = "테이블 생성 ..."; dbCommand.CommandType = CommandType.Text; dbCommand.ExecuteNonQuery();

    dbCommand.CommandText = "Insert Into ..."; dbCommand.CommandType = CommandType.Text; dbCommand.ExecuteNonQuery();

4

이 문제점에 대한 대안은 길이가 255 자보다 긴 텍스트를 열의 첫 번째 행에 추가하는 것입니다. OleDB는이 열을 MEMO 형식으로 처리 한 다음 셀에 255 자 이상을 삽입 할 수 있습니다.

+0

정말 고마워요! 너는 최고야! 그것은 매력처럼 작동합니다. 나는 두 번째 라인을 숨기고 멋지게 보입니다! – nelucon

관련 문제