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

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

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

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

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

次の例では、クライアントアプリケーションを通してXMLデータファイルを提供します。さらに、エンドユーザーは、クライアントプロジェクトを通して、生成される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="dataFile">Xml data file:</label>
            <input type="file" id="dataFile" name="dataFile" accept=".xml" />
            <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="POST"/>
    </form>
    

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

先頭に戻る

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

WinFormsアプリケーション

HTMLアプリケーション

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

先頭に戻る