【问题标题】:How to get Column Values with cell Address From Excel c#如何从Excel c#中获取带有单元格地址的列值
【发布时间】: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 的索引将丢失。只有具有值的单元格存储在列表中。

标签: c# excel


【解决方案1】:

如果有人有兴趣知道答案... 下面的代码实际上跳过了空值并丢失了实际的索引

List<string> strArray = myvalues.OfType<string>().Select(o => o.ToString()).ToList();

所以,我没有使用上面的代码...我尝试显式循环遍历数组值并通过添加“if null”检查并将项目添加到列表中来保留每个项目的索引

range = xlWorkSheet.UsedRange;
int rowCount = range.Rows.Count;

List<string> strArray = new List<string>();
for (int i = 1; i < rowCount; i++)
{
    if (myvalues.GetValue(i, 1) == null)
        strArray.Add(" ");   
    else  
       strArray.Add(myvalues.GetValue(i, 1).ToString());  
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2017-02-12
    • 2012-12-29
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多