将查询中的数据保存为 csv 文件
Posted
技术标签:
【中文标题】将查询中的数据保存为 csv 文件【英文标题】:saving data from a query as a csv file 【发布时间】:2011-03-31 02:15:25 【问题描述】:我有一个应用程序,它打开一个 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();
这是保存按钮的代码,但是下面有错误:
filter = saveFileDialog1.FileName;
writer = new StreamWriter(filter);
我不知道为什么。
【问题讨论】:
在这种情况下,错误/异常可能很方便。另外,animalQuery 是在哪里定义的?代码似乎不完整。此外,即使选择了翅膀,您也正在编写所有标题,我认为文件中的位置不正确。 【参考方案1】:除非你的代码是准确的,否则你不能为你的代码分配一个常量变量:
filter = saveFileDialog1.FileName;
您将“过滤器”声明为更进一步的常量变量:
const string filter = "CSV 文件 (.csv)|.csv| 所有文件 (.)|."; p>
试试看:
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();
您使用 SavefileDialog 属性“过滤器”来定义要过滤的列表。
【讨论】:
好的,非常感谢!那个错误消失了,但是现在当我真正去保存它时,它只是保存为一个“文件”而不是一个 csv 文件,有什么想法吗?我认为这将被 string filter = "CSV file (.csv)|.csv| All Files (.)|." 覆盖。 这只会过滤 SaveFileDialog 中显示的文件。如果有人手动输入文件名,或将过滤器更改为*.*
并选择非 csv 文件,对话框将返回该文件。我建议在继续之前验证从 SaveFileDialog 返回的内容是否以 .csv 结尾。以上是关于将查询中的数据保存为 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章