You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在UiPath Studio中用LINQ实现Excel行列单独循环过滤的技术问询

在UiPath Studio中用LINQ实现Excel行/列的单独过滤

针对你提到的470列、67行的Excel表格,以下是用LINQ分别实现行过滤和列过滤的具体操作:

一、行过滤(筛选符合条件的行)

  1. 先用Read Range活动读取Excel文件,将结果存入DataTable变量(比如命名为dtOriginal)。
  2. 使用LINQ查询筛选目标行,示例如下:
    • 筛选某列值等于指定内容的行:
      dtFilteredRows = dtOriginal.AsEnumerable()
                                .Where(Function(row) row("目标列名").ToString().Equals("筛选值"))
                                .CopyToDataTable()
      
    • 筛选某列非空的行:
      dtFilteredRows = dtOriginal.AsEnumerable()
                                .Where(Function(row) Not String.IsNullOrEmpty(row("目标列名").ToString()))
                                .CopyToDataTable()
      
    • 避免空结果报错:如果LINQ查询无匹配行,直接调用CopyToDataTable()会抛出异常,建议先判断:
      Dim filteredRows = dtOriginal.AsEnumerable().Where(Function(row) row("目标列名").ToString().Equals("筛选值"))
      dtFilteredRows = If(filteredRows.Any(), filteredRows.CopyToDataTable(), dtOriginal.Clone())
      

二、列过滤(筛选指定列)

列过滤可通过LINQ筛选列名/索引,再生成新的DataTable:

  1. 按列名关键词筛选(比如保留名称包含"统计"的列):
    Dim targetColumns = dtOriginal.Columns.Cast(Of DataColumn)()
                                        .Where(Function(col) col.ColumnName.Contains("统计"))
                                        .Select(Function(col) col.ColumnName)
                                        .ToArray()
    dtFilteredColumns = dtOriginal.DefaultView.ToTable(False, targetColumns)
    
  2. 按列索引筛选(比如保留前100列):
    Dim targetColumns = dtOriginal.Columns.Cast(Of DataColumn)()
                                        .Where(Function(col) col.Index < 100)
                                        .Select(Function(col) col.ColumnName)
                                        .ToArray()
    dtFilteredColumns = dtOriginal.DefaultView.ToTable(False, targetColumns)
    
  3. 直接指定列名筛选:
    若明确知道要保留的列名,可直接传入列名字符串数组(列数少且固定时更高效):
    dtFilteredColumns = dtOriginal.DefaultView.ToTable(False, "列A", "列B", "列C")
    

额外提示

  • 处理470列的表格时,建议Read Range活动取消勾选Preserve format,避免加载冗余格式数据提升性能。
  • 所有LINQ操作都在Assign活动中执行,变量类型需提前设置为DataTable。

内容的提问来源于stack exchange,提问作者Melbin Antu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:12:43