【问题标题】:How to get the Rows cell value from columnHeaderNames in excel using c#如何使用c#从excel中的columnHeaderNames获取行单元格值
【发布时间】:2014-09-09 05:06:16
【问题描述】:

我的要求是从 excel 表中读取指定列的行。例如

如果我需要从上面的 excel 中获取列的行值(即)B 如何获取它。 我正在使用以下代码获取列标题名称。

     Excel.Application xlApp = new Excel.Application();
        Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(FileNameTextBox.Text);
        Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[1]; // assume it is the first sheet
        int columnCount = xlWorksheet.UsedRange.Columns.Count;
        List<string> columnNames = new List<string>();
        for (int c = 1; c < columnCount; c++)
        {
            if (xlWorksheet.Cells[1, c].Value2 != null)
            {
                string columnName = xlWorksheet.Columns[c].Address;
                Regex reg = new Regex(@"(\$)(\w*):");
                if (reg.IsMatch(columnName))
                {
                    Match match = reg.Match(columnName);
                    columnNames.Add(match.Groups[2].Value);
                }
            }
        }

它给了我一个包含 A、B、C、D、E、F 的列表的输出。如果我需要单独获取列 C 的值,那么如何获取它..?

【问题讨论】:

    标签: c# excel interop excel-2010


    【解决方案1】:

    你的连接中的 HRD 应该是 NO 来访问标题数据,然后使用第一个循环的行和第一个循环中的内部循环来访问行的单元格。

    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 12.0;HDR=No;IMEX=2\"";
    

    【讨论】:

      【解决方案2】:

      此方法返回excel表格第一行单元格的值:

      public static string[] FirstRowInWorkSheet(string filename, int sheetNumber)
          {
              Application xlsApp = new Application();
              Workbook wb = xlsApp.Workbooks.Open(filename,
                  0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true);
      
              var sheets= wb.Worksheets;
              Worksheet xlWorksheet =sheets[sheetNumber]; 
      
              int columnCount = xlWorksheet.UsedRange.Columns.Count;
              Range xlRange = xlWorksheet.UsedRange;
              string[] firstRow = new string[columnCount];
      
              for (int c = 0; c < columnCount; c++)
              {
                  if (xlRange.Cells[1, c + 1].Value2 != null)
                  {
                      firstRow[c] = xlRange.Cells[1, c + 1].Value2.ToString();
                  }
              }
              return firstRow;
          }
      

      此代码可帮助您将表的标题作为数组获取。当用户选择列时,获取其索引,然后操作一列的单元格 - 与操作第一行的方式相同 - 只需更改您在 Cell[i,j] 中修复的内容:根据用户选择。

      【讨论】:

        猜你喜欢
        • 2012-12-29
        • 2012-01-27
        • 2023-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多