如何处理从Windows Universal应用程序导入和导出数据

时间:2016-05-05 11:38:12

标签: win-universal-app windows-8.1 windows-10

我正在开发一个收集比赛结果的Windows Universal应用程序。它将每个竞争结果保存在应用程序文件夹中的sql-lite数据库中,以便用户可以查看以前的结果。但是,我对保存和打开比赛结果有进一步的要求。

  1. 我需要能够将竞赛结果导出为CSV文件,以便可以在不同操作系统上的另一台计算机上运行的第三方应用程序打开它们。
  2. 我需要能够将结果导出为可以上传/包含在用户自己的网站中的HTML文件。
  3. 我需要用户能够打印结果(我以为可以通过从浏览器打印HTML文件来完成)
  4. 我希望用户能够选择以我自己的格式导入由我自己的遗留应用程序创建的竞赛结果。
  5. 然而,似乎我们在Windows Universal应用程序中受限制,如果我们已经请求该应用程序功能,则在非常特定的情况下将文件保存到非常特定的文件夹。因此,我使用FileOpenPicker和FileSavePicker来保存和读取文件时出现访问被拒绝错误。

    我认为我可能需要以不同的方式查看结果的导出和导入,但经过大量搜索后,我无法提出正确的建议解决方案。那么问题是我应该如何处理结果的导入和导出?我应该使用用户的文档文件夹还是他们的OneDrive?我是否需要为我的应用创建一个Web应用程序,以便用户可以将结果存储在云中并从那里下载?

1 个答案:

答案 0 :(得分:2)

CSV和HTML都是带有一些编码的文本文件。所以你的问题是关于如何用JS读/写文件 以下是如何使用FileSavePicker创建html页面的示例:

var savePicker = new Windows.Storage.Pickers.FileSavePicker();
savePicker.suggestedStartLocation =   Windows.Storage.Pickers.PickerLocationId.documentsLibrary;
savePicker.fileTypeChoices.insert("Web page", [".html"]);
savePicker.suggestedFileName = "New page";

savePicker.pickSaveFileAsync().then(function (file) 
 {
 if (file) {

 var _WriteThis="<!DOCTYPE html>" + "\r\n";
 _WriteThis = _WriteThis + "<html><head><title>Web page title</title>" + "\r\n";
 // ..... 

 Windows.Storage.FileIO.writeTextAsync(file, _WriteThis, Windows.Storage.Streams.UnicodeEncoding.utf8);
           }
});

此示例不需要任何特殊规则,您可以将文件保存在PC HDD或USD棒上的任何位置,而无需在清单中设置功能(系统文件夹除外)
以csv格式保存的方式相同