我只是使用一个简单的代码将字符串列表编写为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;
但我收到错误“索引超出范围”!我的手术有什么问题?可以帮忙吗?
答案 0 :(得分:1)
allterms.Count
是List
中的项目总数。您的循环正在尝试访问不存在的Count + 1
。
例如,假设allterms
中有10个项目。总计数等于10
,索引范围为0 - 9
,即10项。你在for循环中所做的是访问索引范围1 - 10
的项目,该项目正在跳过index 0
处的项目并尝试访问index 10
处的项目存在。
试试这个:
for (int i = 0; i < allterms.Count; i++ )
{
excelApp.Cells[i + 1, 1] = allterms[i];
}
答案 1 :(得分:1)
在excel中,所有索引都是基于1的。在C#中,所有索引都是从0开始的。在您的代码中,您似乎使用基于1的访问模型:for excel和list。
另外,为了提高插入速度,最好设置范围值而不是每个单元格。您可以查看我在这里的示例:http://outcoldman.com/en/blog/show/201