0

我有一个包含多行和多列的 excel 表,我在我的 .NET 应用程序(使用 C#)的数据集中获取它。当我通过一个简单的 SELECT 查询看到返回的数据集时,excel 表具有我想要的所需列,并且它们之间还有一些空白列,默认情况下被命名为 F1、F2、F3 等。我想要做的是删除这些列,只获取我想要的所需列。提前致谢。

4

2 回答 2

2

用 DataTable 和 DataView 试试:

DataTable oldTable = dataSet.Tables[0];
DataTable newTable = oldTable.DefaultView.ToTable(false, "Only columns you want", "Only columns you want");

如果所有列名都是动态的,您可以试试这个:

for (int col = dataTable.Columns.Count - 1; col >= 0; col--)
{
  bool removeColumn = true;
  foreach (DataRow row in dataTable.Rows)
  {
    if (!row.IsNull(col))
    {
      removeColumn = false;
      break;
    }
  }
  if (removeColumn)
    dataTable.Columns.RemoveAt(col);
}

或更短的 LinQ 版本:

for (var col = dataTable.Columns.Count - 1; col >= 0; col--)
    {
        bool removeColumn = dataTable.Rows.Cast<DataRow>().All(row => row.IsNull(col));
        if (removeColumn)
            dataTable.Columns.RemoveAt(col);
    }
于 2013-04-18T09:44:32.090 回答
0

@Yeronimo

您对动态列的回答工作正常...非常感谢先生...

以及一些可能有帮助的相关文章

使用asp.net检查excel工作表中的行是否为空

转换为 Excel 时从 GridView 中删除列

http://www.daniweb.com/software-development/csharp/threads/297806/how-can-i-remove-empty-columns-in-spreadsheet

于 2013-04-22T18:19:39.823 回答