如何处理 Windows 通用应用程序的数据导入和导出

How to handle data import and export from a Windows Universal app

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

  1. 我需要能够将比赛结果导出为 CSV 文件,以便第三方应用程序可以打开它们,这些应用程序可能 运行 在不同操作系统的单独机器上.
  2. 我需要能够将结果导出为 HTML 文件,可以 uploaded/included 在用户自己的网站中。
  3. 我需要用户能够打印结果(我认为这可以通过从浏览器打印 HTML 文件来完成)
  4. 我希望用户能够选择以我自己的格式导入由我自己的遗留应用程序创建的比赛结果。

但是,如果我们请求应用程序功能,我们似乎在 Windows 通用应用程序中只能在非常特定的情况下将文件保存到非常特定的文件夹中。因此,我在使用 FileOpenPicker 和 FileSavePicker 保存和读取文件时遇到访问被拒绝的错误。

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

CSV 和 HTML 都是带有某种编码的文本文件。所以你的问题是关于如何 read/write 文件与 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 格式