3

Javascript を使用して計算を実行し、データをプロットするアプリがありますが、ユーザーが実際にデータを csv または xls ファイルにダウンロードできるオプションを追加したいと考えています。

Javascript (またはその他の方法) でユーザーにボタンを押す方法はありますか?保存するファイルの名前を入力するように求められ、カンマ区切りまたは Excel スプレッドシートが作成されますか?

ありがとう!

編集:

みんなのすべての提案に感謝します。皆さんを回答としてマークできたらいいのにと思いますが、アップボートは今のところ行う必要があります

4

6 に答える 6

4

ウィンドウを開いてcsvを書き込むのは難しくありません。Content-Type:しかし、JavaScriptがヘッダーを変更する方法はわかりません。それがなければ、保存または開くように求められません。

これを行うには、サーバーからの支援が必要です。フォーム変数でサーバーにデータを送信し、サーバーに正しいヘッダーを付けてすぐに送り返すことができます。ヘッダーにファイル名を付けContent-type: text/csvたい場合もあります。Content-Disposition:

于 2011-09-22T00:04:54.287 に答える
1

Yes, but you'll need to use server-side code as well. Use JavaScript to construct a link to a page that streams the csv data back as an attachment. The server output should contain a content-disposition header of attachment; filename="fileName.csv".

于 2011-09-22T00:06:23.053 に答える
1

いいえ、JavaScript から直接ファイルを作成または保存することはできません。一部のブラウザー/プラットフォーム (IE/Windows) では、ActiveX オブジェクトを介してファイルを作成および書き込みできます。

function WriteToFile()
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var s = fso.CreateTextFile("C:\\temp\\Test.txt", true);
s.WriteLine('Hello');
s.Close();
}

もう 1 つの解決策は、クライアント側の JavaScript (ブラウザー内) を使用して CSV データを別のウィンドウ (またはポップアップ) に出力し、ユーザーにそれをコピーして Excel に貼り付けさせることです。

于 2011-09-22T00:11:20.303 に答える
1

ブラウザのウェブサイトのスタイルでやりたい場合は、難しいかもしれません. .htaただし、Javascript はこれを行うのに適した言語ですが、通常の の代わりに使用する必要があります.html。を作成する.htaと、通常の と同様にスタンドアロン アプリケーションが作成されます.exe

ここにあなたが探したいものがありますActiveXObject("Excel.Application")

html を hta に変換するためのタグは次のとおりです。

<HTA:APPLICATION
  id="SomeId"
  border="thin"
  borderStyle="normal"
  caption="yes"
  maximizeButton="yes"
  minimizeButton="yes"
  showInTaskbar="yes"
  windowState="yes"
  innerBorder="yes"
  navigable="yes"
  scroll="auto"
  scrollFlat="yes"
  singleinstance="yes"
/>

htaExcel のアクティブ Xをさらに読むには

于 2011-09-22T00:16:00.660 に答える
1

これを行うFireBreathを使用してブラウザー プラグイン (IE では ActiveX コントロール、その他では NPAPI) を作成することは確かに可能です。C++ で書く必要があります。正直なところ、代わりにサーバー側でこれを行うことを提案する他の人に同意しますが、プラグインを使用して行うことができ、それほど難しくはありません.

于 2011-09-22T04:47:34.207 に答える
0

データURIを使用して(特定のサイズ制限まで)これを行うことは可能だと思います

于 2013-07-22T14:45:49.600 に答える