【发布时间】:2015-08-23 16:52:08
【问题描述】:
我可以使用下面的代码从 excel 中读取一列。该代码将值读入 System.Array 。并使用该 Sytem.Array 对象数据,我将其转换为列表类型。但是,对于从 excel 读取的每个单元格......我需要它的地址(更具体地说,行号)。我该怎么做?
string sFilePath = "C:\\Mydata.xls";
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(sFilePath);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item("PID");
xlApp.Visible = true;
Excel.Range MyColumn = oExcelSheet.UsedRange.Columns[7];
System.Array myvalues = (System.Array)MyColumn.Cells.Value;
List<string> strArray = myvalues.OfType<string>().Select(o => o.ToString()).ToList();
我不知道这是否有帮助,但是在调试模式下检查时... System.Array(即 myvalues)的单元格值的索引与单元格的行号完全匹配,这正是我需要的。
【问题讨论】:
-
那么...为什么不使用
strArray.IndexOf("whatever string you are looking for")? -
我可以这样做,但问题是列中的某些单元格是空的。因此,当数组转换为字符串列表时...带有空字符串 s 的索引将丢失。只有具有值的单元格存储在列表中。