ASP.NET Web API コントロール
クライアントからポストされたJSONデータからExcelを生成
サービス > Excelサービス > Excelサービスの生成 > クライアントからポストされたJSONデータからExcelを生成

このセクションでは、クライアントアプリケーションを通してWeb APIサービスを呼び出し、クライアントからポストされたJSONデータファイルからExcelを生成する方法を具体的に説明します。

手順1:サービスを呼び出す

手順2:クライアントプロジェクトを実行する

次の例では、Web APIサービスをHTMLおよびWinFormsクライアントアプリケーションから呼び出します。これらのクライアントはサービスにPOST要求を送り、サービスは応答ストリームを返します。これにより、この応答ストリームは目的のExcelファイル形式で保存されます。

次の例では、クライアントアプリケーションを通してJSONデータファイルを提供します。さらに、エンドユーザーは、クライアントプロジェクトを通して、生成されるExcelファイルのサービスURL、名前、および適切なファイル形式を指定する必要があります。これは、生成するExcelのパラメータまたはクエリー文字列は、要求URL内ではなくPOST要求のHTTPメッセージ本文に含まれて送信されるためです。

手順1:サービスを呼び出す

Web APIサービスを呼び出すには、次の手順を実行します。

  1. REST APIサービスに対するクライアントの設定」の説明に従ってWinFormsアプリケーションを作成します。4つのC1Labelコントロール、3つのC1TextBoxコントロール、2つのC1Buttonコントロール、および1つのOpneFileDialogコンポーネントを追加します。フォームが以下のように表示されるように、テキストプロパティを設定します。
             
  2. [データファイルを選択]ボタンのボタンクリックイベントに以下のコードを追加します。
    C#
    コードのコピー
    private void button1_Click(object sender, EventArgs e)
            {
                    var result = openFileDialog1.ShowDialog();
            if (result == DialogResult.OK || result == DialogResult.Yes)
                    {
                    _filePath = openFileDialog1.FileName;
                    if (!string.IsNullOrEmpty(_filePath))
                            {
                            label1.Text = _filePath;
                        }
                            }
            }
    

  3. [Excelの生成]ボタンのボタンクリックイベントに以下のコードを追加します。
    C#
    コードのコピー
    private void button2_Click(object sender, EventArgs e)
    {
    if (string.IsNullOrEmpty(_filePath))
            {
            MessageBox.Show("Invalid response.");
            return;
        }
    using (var client = new HttpClient())
    using (var formData = new MultipartFormDataContent())
    using (var fileStream = File.OpenRead(_filePath))
            {
    var fileName = string.IsNullOrEmpty(C1TextBox1.Text) ? "test" : textBox1.Text;
    var fileFormat = string.IsNullOrEmpty(C1TextBox2.Text) ? "xlsx" : textBox2.Text;
    formData.Add(new StringContent(fileName), "FileName");
    formData.Add(new StringContent(fileFormat), "FileFormat");
    formData.Add(new StreamContent(fileStream), "DataFile", Path.GetFileName(_filePath));
    var response = client.PostAsync(C1TextBox3.Text, formData).Result;
    if (!response.IsSuccessStatusCode)
            {
            MessageBox.Show("Invalid response.");
            return;
        }
    var tempPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
    if (!Directory.Exists(tempPath))
            {
            Directory.CreateDirectory(tempPath);
        }    
    var tempFilePath = Path.Combine(tempPath, string.Format("{0}.{1}", fileName, fileFormat));
    using (var newFile = File.Create(tempFilePath))
            {
            response.Content.ReadAsStreamAsync().Result.CopyTo(newFile);
        }
            
                                    Process.Start(tempFilePath);
                 }
         }
    

    POST要求に関して、System.Net.Http.MultipartFormDataContentクラスのインスタンスであるformDataが使用されることに注意してください。コードを通して、HTTPコンテンツをformDataに追加し、指定されたURIに非同期POST要求を送る際にそれを渡します。

  1. REST APIサービスに対するクライアントの設定」の説明に従ってHTMLアプリケーションを作成します。
  2. HTMLページの<body>タグ内の<form>タグに、以下のマークアップを追加します。
    HTML
    コードのコピー
    <form action=http://demos.componentone.com/ASPNET/C1WebAPIService/api/excel 
    
        method="POST" enctype="multipart/form-data">
            <label for="data">Json data file:</label>
            <input type="file" id="data" name="data" accept=".json" />
            <br/><br/>
            <label for="fileName">File Name:</label>
            <input type="text" id="fileName" name="fileName" value="test"/>
            <br /><br />
            <label for="fileFormat">File Format:</label>
            <input type="text" id="fileFormat" name="type" value="xlsx" />
            <br /><br />
            <input type="submit" value="Generate Excel"/>
    </form>
    

    POST要求に関して、<form>タグのmethod属性にPOST、そのenctype属性に"multipart/form-data"、およびそのaction属性にサービス要求URLを設定したことに注意してください。また、HTMLページに入力コントロールを作成します。このコントロールは、クライアントからポストされたJSONデータファイルからExcelファイルを生成するために各種のパラメータを取ります。

先頭に戻る

手順2:クライアントプロジェクトを実行する

WinFormsアプリケーション

HTMLアプリケーション

以下に示す、JSONデータファイルからExcelを生成するREST APIサービスのデモサンプルをご覧ください。

先頭に戻る