2017-01-15 6 views
1

특정 행 (예 : A2 열에서 사용 된 마지막 행)의 열에 사용 된 행 수를 가져오고 싶습니다. 특정 열의 행 수 가져 오기 Excel Interop C#

나는 다음 코드를 시도했지만 원하는 결과를 얻을 수 없습니다 (즉, 4를 받고되어야한다 만 가지고 5 행)

enter image description here

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.IO; 
using Excel = Microsoft.Office.Interop.Excel; 

namespace excel_interop_practice 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     Excel.Application xlApp = new Excel.Application(); 
     Excel.Workbook xlWorkbook = xlApp.Workbooks.Open("D:\\book1.xlsx"); 

     Excel.Range xlTestRange; 
     Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; 
     xlTestRange = xlWorksheet.UsedRange; 

     int row_used = xlTestRange.Cells[2, 1].End(Excel.XlDirection.xlDown).Row; 
     Console.WriteLine(row_used); 

     Console.ReadKey(); 
    } 
} 
} 

답변

0

귀하의 코드는 엑셀 통합 문서를 열고이하는을 얻는다 사용 된 범위에서 범위. 그런 다음에 2 행 안부 1에서 마지막으로 사용 된 행을 식별 할 수 row_used를라는 int는 설정 : 다음

int row_used = xlTestRange.Cells[2, 1].End(Excel.XlDirection.xlDown).Row; 

을 출력 row_used.

일부 테스트를 실행하면 행 값을 변경하면 반환 된 값이 변경되지 않는다는 것이 나타납니다. 나는 당신이 그 칼럼에있는 빈 셀에 도달 할 때까지 단순히 현재 선택된 셀에서부터 셀 수밖에 없다고 생각합니다.

귀하의 의견을 이해할 수 없습니다 : 특정 행 (예 : A2 열에서 사용되는 마지막 행)에서 열의 사용 된 행 수를 얻고 싶습니다. 코드에서와 같이 문서를 열면 현재 선택된 셀은 선택한 셀이 마지막으로 저장되거나 닫힐 때의 위치가됩니다. 그래서 이것은 Excel 용 플러그인 (VSTO) 용이며 반드시 C# 코드의 사용자와 상호 작용할 수있는 것은 아닙니다. 다시 말하지만,이 작업을 수행 할 다른 Excel 기능이 없으면 직접 계산해야 할 수도 있습니다. Get Last non Empty Cell of Excel Column Programatically

var row_Used = excelApp.WorksheetFunction.CountA(xlWorksheet.Columns[4]); 

에서 @Seth 무어에서

하나의 해결책은 단순히 열에서 모든 비어 있지 않은 셀을 계산한다. 그러나 코드 에서처럼 발생할 수있는 몇 가지 단점이 있습니다. 가능한 문제 시나리오는 아래 그림을 사용하여 설명됩니다.

enter image description here

당신은 같이 같은 범위 뭔가를 반환하는 데 사용했을 때 문제를 해결 얼마나 말을하지 않습니다. 열 "C"에 무엇을 넣으시겠습니까? 현재 두 코드 샘플은 첫 번째 두 열에 대해 동일하지만 C 열에서는 4 번째 열에서 비어 있지 않은 첫 번째 셀이 시작되므로 해당 열에 대해 4가 반환됩니다. 두 번째 코드 결과는 CountA을 사용하여 8이됩니다. 열 "D"는 예상대로 2를 반환하고 두 번째 값은 7을 반환합니다. 이런 상황을 어떻게 처리해야할지 모르겠습니다. 희망이 도움이됩니다.

+0

특정 열에서 최대 행 수를 얻는 방법은 무엇입니까? 예를 들어 'B'와 'C'열은 12이고 'D'열은 9입니다.? – JayNaz

+0

@ JayNaz ... 위에서 언급 한 것처럼 특정 열의 행 수를 얻으려면 사용 된 범위에서 반환 된 마지막 행에서 시작한 다음 찾고있는 열의 각 셀을 확인해야합니다. 사용 된 범위의 마지막 행부터 시작하여 비어 있지 않은 해당 열에서 셀을 찾을 때까지 반복하십시오. 특정 열에 대해서도'CountA'를 사용할 수 있습니다; 그러나 이것은 빈 셀을 셀 수 없습니다. 따라서 데이터가있는 첫 번째 셀과 데이터가있는 마지막 셀 사이에 끼어있는 열에 빈 셀이 있으면 CountA를 사용하여 데이터가있는 마지막 행을 찾을 수 없습니다. – JohnG