读取excel中的列到c#

嗨我想读取一个Excel文件到C#,但我想将列数据转换为string数组,然后到一个string。 我想我已经在这里做了,但我不确定。 无论如何,当我尝试读取excel列的标题为我的第二如果语句我得到一个错误,说:“索引超出数组的界限”。 我是一个初学者,因此不明白我做错了什么。

if (xlApp != null) { //Doing excel things int i = SheetNum; Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(filename, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true); Excel.Sheets sheets = xlWorkbook.Worksheets; Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(i); Excel.Range usedRange = worksheet.UsedRange; Excel.Range colRange = usedRange.Columns; Excel.Range firstRow = worksheet.UsedRange.Rows[1]; int rowCount = colRange.Rows.Count; int colCount = colRange.Columns.Count; for (int m = 1; m < colCount; m++) { for (int n = 0; n <= rowCount; n++) { System.Array myHeadvalues = (System.Array)firstRow.Cells.Value; string[] HeaderData = myHeadvalues.OfType<object>().Select(o => o.ToString()).ToArray(); Excel.Range some = worksheet.UsedRange.Columns[m]; System.Array myNamevalues = (System.Array)some.Cells.Value; string[] result1 = myNamevalues.OfType<object>().Select(o => o.ToString()).ToArray(); //String types if (result1.Contains("Name") && HeaderData.Contains("Name")) { string tagval = HeaderData[n].ToString() + ".Array" + string[] result = result1.Skip(1).ToArray(); string Inputs = result[n + 1].ToString(); System.Console.WriteLine(tagval, Inputs); } //Error Appears here// else if (result1.Contains("Description") && HeaderData.Contains("Description")) { string tagval = HeaderData[n].ToString() + ".Array" + string[] result = result1.Skip(1).ToArray(); string Inputs = result[n].ToString(); System.Console.WriteLine(tagval, Inputs); } } } } 

顺便说一句我现在修复了我的代码,它跨列读取没有问题。 如果有反正我可以加快它,请让我知道。 谢谢。

 List<string> ColumnValues = new List<string>(); for (int n = 2; n < rowCount; n++) { for (int m = 1; m < colCount; m++) { Excel.Range some = worksheet.UsedRange.Columns[m]; System.Array myvalues = (System.Array)some.Cells.Value; string[] Data = myvalues.OfType<object>().Select(o => o.ToString()).ToArray(); ColumnValues = Data.ToList(); System.Console.WriteLine(ColumnValues); //String Types if (ColumnValues.Contains("Name")) { string tagval = "Product_Array[0].Name"; string[] result = ColumnValues.Skip(1).ToArray(); } } } } 

这是脱离主题(我还不能评论),但它可能是有用的:它看起来像你正在使用自动化或类似的东西。 我build议使用像ClosedXML这样的库(这是免费的),因为它确实需要Excel应用程序来读取和写入Excel文件。 在大多数情况下,图书馆将比Excel应用程序更快地完成工作。