programing

Excel에서 읽기(다차원 배열 범위) C#

javajsp 2023. 9. 21. 20:05

Excel에서 읽기(다차원 배열 범위) C#

Excel 시트에서 읽고 표시된 선택 항목(Area)을 다차원 배열로 로드하려면 어떻게 해야 합니까?Excel의 열은 하나 이상의 값을 포함하므로 그 자체가 다차원 배열이 될 수 있습니다.

지금 생각하는 것은 (이게 얼마나 좋은지 나쁜지는 확실하지 않습니다) 모든 Excel을 통해 루프를 수행하는 것입니다.영역(선택한 필드)을 지정하고 해당 필드의 내용을 다차원 배열에 추가합니다.다차원 배열은 개체 유형[,]이므로 비범용이므로 편리한 add() 방법이 없습니다.이 모든 작업은 수동으로 수행해야 합니다.

이 접근 방식이 괜찮은지 아니면 더 효율적으로 이루어질 수 있을지에 대한 아이디어가 있습니까?

Range as array의 값을 읽을 수 있습니다.

using (MSExcel.Application app = MSExcel.Application.CreateApplication()) 
{
    MSExcel.Workbook book1 = app.Workbooks.Open( this.txtOpen_FilePath.Text);
    MSExcel.Worksheet sheet = (MSExcel.Worksheet)book1.Worksheets[1];
    MSExcel.Range range = sheet.GetRange("A1", "F13");

    object value = range.Value; //the value is boxed two-dimensional array
}

이 코드 조각은 의 것입니다.MS Office용 NET 래퍼입니다.하지만 MS Excel의 VSTO나 VBA에서도 같은 원리가 있습니다.

다음은 스프레드시트기어로 이를 수행하기 위한 C# 코드입니다.

    // Load the workbook.
    SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook(@"MyWorkbook.xlsx");
    // Get a range of cells as an array of object[,].
    object[,] values = (object[,])workbook.Worksheets["MySheet"].Cells["A1:J10"].Value;

스프레드시트기어는 셀에 한 번에 하나씩 액세스할 수 있는 빠른 API도 제공하므로 성능을 저하시키지 않고 배열에 값을 복사할 수 있습니다.

면책 사항:저는 스프레드시트기어 LLC를 소유하고 있습니다.

언급URL : https://stackoverflow.com/questions/910400/reading-from-excel-range-into-multidimensional-array-c-sharp