programing

Excel 셀 값이 OLEDB 공급자에 의해 잘립니다.

goodsources 2023. 8. 19. 10:15
반응형

Excel 셀 값이 OLEDB 공급자에 의해 잘립니다.

OleDbConnection 클래스를 사용하여 Excel 2000/2003 워크북에서 데이터를 검색하고 있습니다.

string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                          "Data Source=" + filename + ";" +
                          "Extended Properties=\"Excel 8.0;IMEX=1\";";

OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();

// code to get table name from schema omitted

var dataAdapter = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", name),connection);
var myDataSet = new DataSet();
dataAdapter.Fill(myDataSet, "ExcelInfo");

이제 워크시트의 길이가 255자를 초과하는 셀이 잘리고 있는 것으로 나타났습니다.이것은 Microsoft의 제한 사항입니까?제트. OLEDB 공급자, 아니면 제가 할 수 있는 일이 있나요?

누구라도 있나요?

Excel용 OLEDB 공급자는 처음 8개 데이터 행을 기반으로 데이터 유형을 자동으로 결정합니다. 이는 연결 문자열에서 HDR=Yes/No 속성으로 설정할 수 있습니다.또한 텍스트 열에 적용할 수 있는 여러 유형이 있습니다.메모 유형은 255자를 초과하므로 처음 8개 행 중에 해당 문자가 없으면 데이터 유형이 잘못 설정됩니다.

이 설정을 변경하는 방법은 다음 설명에 따라 TypeGuesRows라는 레지스트리 설정을 변경하는 것입니다. Microsoft 지원

참고: TypeGuesRows 키의 유효한 값 범위는 0 ~ 16입니다.그러나 값이 0인 경우 스캔한 원본 행의 수는 16384입니다.따라서 파일 크기가 매우 큰 경우 가장 큰 행이 먼저인지 확인합니다.

스택 오버플로를 통해 게시된 이 OleDBA 어댑터 Excel QA를 사용해 보십시오.

워크시트 셀(행[0][4])을 445자로 채웠는데 잘 작동했습니다.출력에 대한 코드 끝에 추가합니다.

// DataSet:          
Object row0Col3 = ds.Tables["xlsImport"].Rows[0][2];
Object row0Col4 = ds.Tables["xlsImport"].Rows[0][4];

string rowZeroColumn3 = row0Col3.ToString();
string rowZeroColumn4 = row0Col4.ToString();

Console.WriteLine("Row 0, Col 4 string length: {0} " + Environment.NewLine + "Excel content: {1}", rowZeroColumn4.Length, rowZeroColumn4);           

언급URL : https://stackoverflow.com/questions/898513/excel-cell-values-are-truncated-by-oledb-provider

반응형