将查询中的数据保存为csv文件

Ari*_*Ari 3 c# csv savefiledialog

我有一个应用程序打开一个csv文件,并将所有内容显示为格式化的datagridview.从那里我有一个按钮,打开另一个包含一系列复选框的表单.复选框具有我们之前打开的csv文件的所有属性,并且用户应该能够根据他们想要的巫婆属性查询文件,然后保存文件.

例如,如果他们只想要一个显示带翅膀的动物的所有条目的文件,他们只选择翅膀复选框.从那里,您选择保存按钮,它应该保存文件.

private void button1_Click(object sender, EventArgs e)
{
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    const string filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*";
    const string header = "Animal_Name,Hair,Feathers,Eggs,Milk,Airborne,Aquatic,Predator,Toothed,Backbone,Breathes,Venomous,Fins,Legs,Tail,Domestic,Catsize,Type";
    StreamWriter writer = null;

    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {        
        filter = saveFileDialog1.FileName;
        writer = new StreamWriter(filter);

        writer.WriteLine(header);
        foreach (Animal animal in animalQuery)
        {
            writer.Write(animal);
        }  
        writer.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是保存按钮的代码,但是下面有错误:

filter = saveFileDialog1.FileName;
writer = new StreamWriter(filter); 
Run Code Online (Sandbox Code Playgroud)

我不知道为什么.

Zen*_*Pak 6

除非您的代码是准确的,否则您无法为代码分配常量变量:

filter = saveFileDialog1.FileName;

您将"filter"声明为常量变量:

const string filter ="CSV文件(.csv)| .csv |所有文件(.)| . ";

试试看:

        SaveFileDialog saveFileDialog1 = new SaveFileDialog();
        string filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*";
        saveFileDialog1.Filter = filter;
        const string header = "Animal_Name,Hair,Feathers,Eggs,Milk,Airborne,Aquatic,Predator,Toothed,Backbone,Breathes,Venomous,Fins,Legs,Tail,Domestic,Catsize,Type";
        StreamWriter writer = null;

        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            filter = saveFileDialog1.FileName;
            writer = new StreamWriter(filter);

            writer.WriteLine(header);

            writer.Close();
        }
Run Code Online (Sandbox Code Playgroud)

使用SavefileDialog属性"Filter"来定义要过滤的列表.