문제

C ++가 관리하지 못하고 Excel 2007과 협력하고 있습니다. Excel4 API에 대한 호출을 사용하여 사용자가 선택한 셀 범위를 얻습니다.

사용자가 내가 "공통"범위라고 부르는 것을 선택하면이 호출은 "R1C1 : R4C3"과 같은 범위를 반환합니다. 이는 응용 프로그램에서 다른 작업을 수행하는 데 필요한 형식입니다.

그러나 사용자가 전체 열을 선택하기로 결정하면이 API 호출은 "C1 : C3"과 같은 열을 사용하여 범위를 반환합니다. 물론 유효한 Excel 범위이지만 수정해야한다는 의미입니다. 따라서 위의 범위처럼 보입니다. 다시 말해서 나는 수동으로 행 범위를 추가해야합니다.

그래서 나는이 범위 "C1C3"을 가져 와서 "r1c1 : r65534c3"로 변경합니다.

아마도이 시점에서 당신은 이미 내 문제를 발견했을 것입니다. 당신이 알 수 있듯이, 나는 Rows 범위를 Excel 2003에서 지원하는 최대 행의 최대 행으로 하드 코딩하고 있습니다 (응용 프로그램은이 버전의 Excel에서도 작동 함).

물론 선택한 범위를 얻으면 해당 범위의 정보를 읽고 해당 정보를 사용하여 서버에 대한 쿼리를 만들기 때문에 사용자가 Row 534까지 데이터를 입력했다고 상상해보십시오. 그리고 여전히 내 쿼리에는 65000 행이 없습니다.

따라서 내 질문은 사용자가 데이터를 입력 한 마지막 셀을 얻는 방법입니다. 마지막으로 활성 셀이라고 불리는 것이므로 해당 행까지 범위를 구분할 수 있으며 관리되지 않는 코드로 작업하고 있음을 기억하십시오.

도움이 되었습니까?

해결책

Excel 4 API? 진짜?

XLCSelectend 명령이 있습니다. XLCSelectend는 주어진 셀의 어떤 방향 으로든 텍스트를 입력 한 마지막 셀로 점프하는 데 사용할 수 있습니다.

다른 팁

범위를 캐스팅 해보세요. 범위 객체로 선택하십시오.

지역은 마지막으로 사용 된 행을 얻습니다

     Excel.ApplicationClass app = new Excel.ApplicationClass();
        Excel.Workbook workBook = app.Workbooks.Open(_PathFile,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value,
                 System.Reflection.Missing.Value);
        // Get the active worksheet using sheet name or active sheet
        Excel.Worksheet workSheet = (Excel.Worksheet)workBook.ActiveSheet;
        // Find the last real row
        int _InLastRow = workSheet.Cells.Find("*",System.Reflection.Missing.Value,
            System.Reflection.Missing.Value, System.Reflection.Missing.Value, Excel.XlSearchOrder.xlByRows,Excel.XlSearchDirection.xlPrevious, false,System.Reflection.Missing.Value,System.Reflection.Missing.Value).Row;
#endregion
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top