我正在使用LinqToCSV导出C#中的值列表,当我只使用两行时它可以正常工作
LINQtoCSV.CsvContext CSVContext = new CsvContext();
CSVContext.Write(bullishRowList, "C://FileName.CSV");
但是我想使用SaveFileDialog来允许用户选择他想要保存文件的位置。我为此目的做了以下事情。我从here
获取了此代码 Stream myStream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "csv files (*.csv)|*.csv";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((myStream = saveFileDialog1.OpenFile()) != null)
{
LINQtoCSV.CsvContext CSVContext = new CsvContext();
CSVContext.Write(bullishRowList, saveFileDialog1.FileName);
myStream.Close();
}
}
它给出了一个错误“进程无法访问文件'C:\ aaa',因为它正被另一个进程使用”在线CSVContext.Write(bullishRowList, saveFileDialog1.FileName);
我无法弄清楚这块文件有什么问题码。
请帮帮我。
答案 0 :(得分:1)
您自己的流程会在此行中打开文件
if ((myStream = saveFileDialog1.OpenFile()) != null)
并且该行不是必需的
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if (saveFileDialog1.FileName != string.Empty)
{
LINQtoCSV.CsvContext CSVContext = new CsvContext();
CSVContext.Write(bullishRowList, saveFileDialog1.FileName);
}
}
我从未使用过那个库,但是简单地看一下他们的文档,如果你想打开自己的流,那么你需要将打开的流传递给Write方法
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if ((myStream = saveFileDialog1.OpenFile()) != null)
{
LINQtoCSV.CsvContext CSVContext = new CsvContext();
CSVContext.Write(bullishRowList, myStream);
myStream.Close();
}
}