2016-09-25 56 views
0

我有这个问题来保存CSV文件。如何使用FolderPicker保存CSV文件

private async void btnPrint_Click(object sender, RoutedEventArgs e) 
{ 
    var picker = new Windows.Storage.Pickers.FolderPicker(); 
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop; 
    picker.FileTypeFilter.Add(".csv");//add any extension to avoid exception 

    var folder = await picker.PickSingleFolderAsync(); 

    if (folder != null) 
    { 
     string strFilename = strBeginDate + "_To_" + EndDate + ".csv"; 

     StorageFile file = await folder.CreateFileAsync("Rpt" + strFilename, CreationCollisionOption.ReplaceExisting); 

     foreach (var m in FlightData) 
     { 
      sb.Append(m.Id + "," + m.Date + "," + m.Price + "," + ...... + "\r\n"); 
     } 

     await FileIO.AppendLinesAsync(file, new List<string>() { sb.ToString() }); 
    } 
} 

上述原因的错误:

"The filename, directory name, or volume label syntax is incorrect.\r\n"

如果我用这个,没有问题。

StorageFile file = await folder.CreateFileAsync("sample.csv", CreationCollisionOption.ReplaceExisting); 

回答

1

既然你在你的文件名使用日期,你最有可能使用/,例如2015/01/01。这是一个无效的文件名字符,用-替换/或将其完全删除,并且您的代码将起作用。

我已在GitHub上放置了一个small repro project以向您显示错误并修复了问题。

+0

你说得对。我用非法字符作为文件名。希望这也能帮助其他人。 10Q – MilkBottle