약간의 코드가 msdn.com에서 약간 변경되었습니다. Excel 스프레드 시트에서 모든 시트 이름의 문자열 배열을 가져 오려고합니다. foreach
문에 코드를 추가하여 루프 할 때마다 attr.Value를 배열에 배치 할 수 있습니까? 여기 C에서 'foreach'루프를 사용하여 문자열 배열 만들기
public static void GetSpreadsheetData(string fileName)
{
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(fileName, false))
{
string[] allTheSheets = new string[0];
string[] allTheData = new string[0];
S sheets = spreadsheetDocument.WorkbookPart.Workbook.Sheets;
foreach (E sheet in sheets)
{
foreach (A attr in sheet.GetAttributes())
{
int i = 0;
string sheetName = attr.Value;
allTheSheets[i] = attr.Value.ToString();
i++;
Console.WriteLine(allTheSheets[0]);
Console.ReadLine();
}
}
}
}
내가지고있어 오류 메시지입니다 ". 인덱스 배열의 범위를 벗어난 것"
내가 혼란스럽게 생각하는 것 중 하나는 배열을 인스턴스화 할 때 그 인덱스에 [0]의 인덱스를 부여했기 때문에 범위 밖입니까?
길이가 '0'인 배열 (allTheSheets)이 생성됩니다. List 사용을 고려 했습니까? –
배열은 고정 크기입니다. 크기를 조정할 수 없습니다. 따라서 처음부터 올바르게 크기를 조정해야합니다. 크기를 모르는 경우'List'을 사용하십시오. –
코드가 약간 이상합니다. 어떤 라인에서 예외가 발생하는지 알고 있습니까? 주의 깊게 살펴보면 항상 0 인 배열의 인덱스가 있으며 이로 인해 배열이 쓸모 없게됩니다. – Steve