0

我只是使用一个简单的代码来编写一个字符串列表到 excel 如下

        Excel.Application excelApp = new Excel.Application();
        string myPath = Environment.CurrentDirectory + path + "\\reselts.xlsx";
        excelApp.Workbooks.Open(myPath);

        List <string> allterms = new List<string>(alltext.Split(' '));

         allterms= allterms.Distinct().ToList();
        allterms.RemoveAll(String.IsNullOrEmpty);

        for (int i = 1; i < allterms.Count + 1; i++ )
        {

            excelApp.Cells[i, 1] = allterms[i];

        }
        excelApp.Visible = true;

但我得到一个错误“索引超出范围”!我的程序有什么问题?请问有什么帮助吗?

4

2 回答 2

1

allterms.Count是 中的项目总数List。您的循环正在尝试访问Count + 1不存在的 。

例如,假设 中有 10 个项目allterms。总数等于 ,索引10范围为0 - 9,即 10 项。您在 for 循环中所做的是访问索引范围内1 - 10的项目,即跳过项目 atindex 0并尝试访问index 10不存在的项目 at 。

试试这个:

for (int i = 0; i < allterms.Count; i++ )
{
    excelApp.Cells[i + 1, 1] = allterms[i];
}
于 2013-03-16T18:47:41.733 回答
1

在 excel 中,所有索引都是从 1 开始的。在 C# 中,所有索引都是从 0 开始的。在您的代码中,您似乎对两者都使用了基于 1 的访问模型:对于 excel 和列表。

此外,为了提高插入速度,最好为范围设置值而不是为每个单元格设置值。你可以看看我在这里的例子:http: //outcoldman.com/en/blog/show/201

于 2013-03-16T18:50:06.150 回答