필터 자동 필터에 따르면 파일에서 자동 필터를 읽고 SQL 식을 생성해야합니다. 난 당신에게 OPENXML 라이브러리를 사용하여 자동 필터를 읽을 수있는 구조로 코드를 작성 :
Dim SheetName = "SheetName"
Dim fileFullName As String = "C:\MyExcel.xlsx"
Dim SqlFilterExpression As String
Using xslDoc As SpreadsheetDocument = SpreadsheetDocument.Open(fileFullName, False)
Dim theSheet As Sheet = xslDoc.WorkbookPart.Workbook.Sheets.FirstOrDefault(Function(SheetEl) CType(SheetEl, Sheet).Name = SheetName)
Dim WorkSheetPart As WorksheetPart = xslDoc.WorkbookPart.GetPartById(theSheet.Id)
Dim Filter = WorkSheetPart.Worksheet.Elements(Of AutoFilter).First
If Not IsNothing(Filter) Then
For Each FilterPerColumn In Filter.Elements(Of FilterColumn)()
Dim CustomFilters = FilterPerColumn.Elements(Of CustomFilters).FirstOrDefault
If Not IsNothing(CustomFilters) Then
Dim filters = CustomFilters.Elements(Of CustomFilter)()
'check if filter contient tow condition
If filters.Count = 1 Then
Select Case CType(filters(0).Operator, FilterOperatorValues)
Case FilterOperatorValues.LessThan
'...Ect.
End Select
Else
'check if condition joined by or/and
If CustomFilters.And Then
'and joined
Else
'or joined
End If
End If
End If
Next
End If
End Using
모든 XML은 OPENXML 모든 파일을 읽는 것은 같은 시간이 걸릴 것으로, 직렬 액세스 파일 매우 가능하다 후에 때문에.
감사합니다. Lomed, 문제는 Excel이 이미 사용자가 다양한 기준으로 사전 필터링되어 있다는 것입니다. 필터링 된 행만로드하면됩니다. 요컨대, Visible 행만로드 할 수 있어야합니다. 어떤 아이디어? - 다시 한번 감사드립니다! – user2003438