【发布时间】:2013-10-20 20:52:26
【问题描述】:
我稍微修改了一些来自 msdn.com 的代码。我正在尝试获取 Excel 电子表格中所有工作表名称的字符串数组。我可以在foreach 语句中添加一些代码,以便在每次循环时将 attr.Value 放入数组中吗?
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<String>。 -
你的代码有点奇怪。你知道你在哪一行得到例外。仔细观察,您在数组中有一个始终为零的索引,这会使您的数组无用。
-
@L.B 是的!这似乎奏效了!!!这里比较新,有什么可以给你点赞的吗?
-
@Steve 我的代码很奇怪,因为我几乎不知道自己在做什么,哈哈。
标签: c# arrays excel openxml-sdk