2016-05-05 5 views
1

私は、レースの結果を収集するWindows Universalアプリケーションを開発しています。各レースの結果をアプリケーションフォルダ内のsql-liteデータベースに保存するので、ユーザーは以前の結果を表示できます。しかし、レース結果を保存して開くためには、さらに要件があります。Windowsユニバーサルアプリケーションからデータのインポートとエクスポートを処理する方法

  1. 私は、彼らが別のオペレーティングシステム上の別のマシン上で実行されるかもしれない、サードパーティ製のアプリケーションで開くことができるようにCSVファイルとしてレースの結果をエクスポートできるようにする必要があります。
  2. 結果を、自分のWebサイトにアップロード/含めることができるHTMLファイルとしてエクスポートする必要があります。
  3. 結果を印刷できるようにするにはユーザーが必要です(ブラウザからHTMLファイルを印刷するだけでよいと思っていました)
  4. 私はユーザーに結果をインポートさせたいと思います自分のフォーマットで自分のレガシーアプリケーションによって作成されたレースです。

我々は、我々はそのアプリの機能を要求した場合には非常に特殊な状況下でちょうど非常に特定のフォルダにファイルを保存するWindowsのユニバーサルアプリに制限されていること、しかし、そうです。したがって、FileOpenPickerとFileSavePickerを使用してファイルを保存したり読み込んだりする際に、アクセス拒否エラーが発生しています。

結果のエクスポートとインポートを別の方法で表示する必要があるかもしれませんが、多くの検索を行った後では、これについて正しい解決策を提示することができませんでした。だから問題は、結果のインポートとエクスポートをどのように処理するべきかということです。ユーザーのドキュメントフォルダまたはOneDriveを使用する必要がありますか?ユーザーがクラウドに結果を保存してそこからダウンロードできるように、アプリケーション用のWebアプリケーションを作成する必要がありますか?

答えて

2

CSVとHTMLはどちらもエンコードされたテキストファイルです。だからあなたの質問は、JSでファイルを読み書きする方法です。システム以外(特別なルールを必要とせず、あなたがマニフェストに機能を設定することなく、あなたのPCのHDDやUSDスティック上の任意の場所にファイルを保存することができます

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); 
      } 
}); 

この例:ここでは
はどのようにFileSavePickerでHTMLページを作成する例です。フォルダ)
同じ方法でCSV形式で保存することができます

+0

私は事実上C#でこれを試していますが、アクセス拒否の例外が発生しています。私はそれがこので概説されている制限のためだと思っていた... https://msdn.microsoft.com/en-us/windows/uwp/files/file-access-permissions –

+1

Nope。このトピックでは、ファイルピッカーを使用せずに使用できる場所について説明します。マニフェストの宣言だけで –

+0

はい、絶対に正しいです。私は、FileSavePickerで選択したファイルのファイル名を使用していましたが、その後、新しいStorageFileオブジェクトを介してファイルを保存していましたが、これは機能しませんでした。アクセス拒否エラーを回避するには、FileSavePickerから返されたStorageFileオブジェクトを使用する必要があります。 –

関連する問題