【问题标题】:Search text in particular column and retrieve data from another column in excel using C#在特定列中搜索文本并使用 C# 从 excel 中的另一列中检索数据
【发布时间】:2017-11-12 07:57:04
【问题描述】:

我有一个 20 列的 Excel 文件,大约有 150 条记录。我需要在标题为“DESCRIPTION”的特定列(通常是 b 列)中搜索特定字符串。搜索字符串和列标题值来自 INI 文件。找到搜索后,我需要将 J 列中的值(再次从 INI 文件中)复制到输出文件中。

我是 C# 新手。有人可以在这里帮助我。我试过 Range.Find,但我很困惑。

【问题讨论】:

  • 你应该先发布一些你已经完成的代码,你会得到帮助。你为什么使用 C#,尤其是如果你是新手?还有其他更容易学习的语言允许您操作 Excel 数据

标签: c# excel search ini


【解决方案1】:

通常,带有类似 SQL 语句的 OLEDB 可用于检索特定的列或行数据。请通过以下解决方案:

http://www.c-sharpcorner.com/UploadFile/6b8651/read-excel-file-in-windows-application-using-C-Sharp/

https://www.codeproject.com/articles/1088970/read-write-excel-file-with-oledb-in-csharp-without

希望这会给你一些想法。但是尝试展示你的一些代码,以便成员可以更好地理解你的方法。谢谢

【讨论】:

    【解决方案2】:

    除了 Oledb 连接,您还可以使用 ClosedXML。 ClosedXML 是 OpenXML 的包装器,可让您轻松处理 .XLSX 文件。

    https://github.com/ClosedXML/ClosedXML

    您可以查看有助于您了解如何搜索文本的文档。

    如果您想搜索 .XLS 文件,则可以使用 Microsoft Excel 互操作性库。这些库不能在 Web 应用程序中使用,比 ClosedXML 慢,但它们支持各种 Excel 文件。

    【讨论】:

      【解决方案3】:

      您可以使用免费版本的GemBox.Spreadsheet 来搜索 XLS 和 XLSX 文件格式的文本。另外关于INI文件,可以使用MadMilkman.Ini

      这是一个您可以尝试的示例:

      // Load INI file.
      IniFile ini = new IniFile();
      ini.Load("Sample.ini");
      
      // Get INI values.
      string header = ini.Sections["SampleSection"].Keys["ColumnHeaderValue"].Value;
      string search = ini.Sections["SampleSection"].Keys["SearchTextValue"].Value;
      string j = ini.Sections["SampleSection"].Keys["JColumnValue"].Value;
      
      // Load XLSX file.
      ExcelFile excel = ExcelFile.Load("Sample.xlsx");
      ExcelWorksheet sheet = excel.Worksheets[0];
      
      // Find column header value in first row.
      ExcelColumn searchColumn = sheet.Rows[0].Cells
          .First(cell => cell.ValueType == CellValueType.String && cell.StringValue == header)
          .Column;
      
      // Find search value in column.
      int r, c;
      searchColumn.Cells.FindText(search, false, false, out r, out c);
      ExcelCell searchCell = sheet.Cells[r, c];
      
      // Get cell from column "J" that is in the same row as cell that has search text.
      ExcelCell jCell = sheet.Cells[r, ExcelColumnCollection.ColumnNameToIndex("J")];
      // Set cell value.
      jCell.Value = j;
      
      // Save XLSX file.
      excel.Save("Sample.xlsx");
      

      【讨论】:

        猜你喜欢
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 2015-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多