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
'programing' 카테고리의 다른 글
Interop을 사용하여 Excel 인쇄 (0) | 2023.08.24 |
---|---|
Ajax를 사용하여 로드된 양식에 대해 MVC 4 클라이언트 측 유효성 검사가 작동하지 않습니다. (0) | 2023.08.24 |
SQL(MariaDB)에서 문자열의 모든 하위 문자열에 대한 작업 수행 (0) | 2023.08.19 |
PowerShell 스크립트를 exe로 변환 (0) | 2023.08.19 |
Visual Studio 코드를 사용하여 Mac에서 로컬 데이터베이스 설정 (0) | 2023.08.19 |