【问题标题】:How do I delete certain column from .csv file如何从 .csv 文件中删除某些列
【发布时间】:2014-03-26 08:13:34
【问题描述】:

我正在下载数据列表,但有些我想忽略某些列,有什么办法可以删除它们,这就是我的数据库的外观:

    ID  Name   Sname   MobileUsage   NoBrought
    1   test   test    12mb          1
    2   test1  test1   23mb          8
    3   test2  test2   20mb          2

这是我下载 .csv 文件时得到的结果

    ID  Name   Sname   MobileUsage   NoBrought
    1   test           12mb           
    2   test1          23mb           
    3   test2          20mb   

有什么办法可以删除我不使用的 Sname 和 NoBrought,我的输出应该是

    ID  Name   MobileUsage   
    1   test   12mb           
    2   test1  23mb           
    3   test2  20mb  

这就是我所做的,我假设这个程序必须寻找列标题,例如Sname & NoBrought,删除整列并左移。此事件在用户单击按钮时发生,因此删除/编辑应在单击下载按钮时发生。

protected void Page_Load(object sender, EventArgs e)
{
    CsvExport<l> csv = new CsvExport<l>(getList());
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=test.csv");
    Response.ContentType = "text/plain";
    Response.Output.Write(csv.Export());
    Response.End();
}

public List<l> getList()
{
    List<l> n = new List<l>();
    List<string> nl = new List<string>();
    SqlConnection conn = new SqlConnection(Connection goes here...);
    SqlCommand command = new SqlCommand("select ID, Name, MobileUsage FROM TableName");

    conn.Open();
    SqlDataReadData ReadData = command.ExecuteReader();
    while (ReadData.Read())
    {
        l data = new l();
        data.ID = ReadData["ID"].ToString();
        data.Name = ReadData["Name"].ToString();
            etc...
        n.Add(data);
    }
    conn.Close();
    return n;
}

【问题讨论】:

  • 好的,解释一下你写的代码有什么问题。
  • 为什么不首先获取您想要的列? SqlCommand command = new SqlCommand("select ID, Name FROM TableName");
  • @tnw 我没有恢复任何错误,我在问如何从 .csv 文件中删除特定列
  • 您使用的是什么“ExecuteReadData”?我找不到任何文档。使用普通的 ADO.NET,您不应该在 SqlCommand 中获得任何您没有要求的列。
  • @Tobberoth 我已经更新了我的问题以明确说明

标签: c# csv export-to-csv


【解决方案1】:

我不会详细介绍如何获取数据。所以让我们假设你得到一个 csv 文件。

//class to strongly type our results
public class csvClass
{
   public csvClass(string name; string mu)
   {
     this.Name = name; this.MobileUsage = mu;
   }
   public string Name { get; set; }
   public string MobileUsage { get; set; }
}

//just load your csv from wherever you need
var csvData = from row in File.ReadLines(@"Path/to/file.csv")
              // data is still in one line. Split by delimiter
              let column = row.Split(';')
              //strongly type result
              select new csvClass
              {
                  //Ingore column 2 and 4
                  //Take first column
                  Name = column[0],
                  //Take third column
                  MobileUsage = column[2]
              };

在此之后,您应该有一个 IEnumerable&lt;csvClass&gt;(),其中只有您想要的 2 列,您可以将其写入任何您想要的位置 - 新的 csv 文件、数据库...

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2014-04-19
    • 2019-05-01
    相关资源
    最近更新 更多