ASP.NET Web API コントロール
クライアントからポストされたデータを使用してワークブック形式を変換
サービス > Excelサービス > Excelサービスの生成 > クライアントからポストされたデータを使用してワークブック形式を変換

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

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

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

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

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

メモ: サービスは、クライアントからポストされたxlsファイル、xlsxファイル、およびcsvファイルを変換できます。

手順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="WorkbookFile">Select data file:</label>
            <input type="file" id="WorkbookFile" name="WorkbookFile" />
            <br/><br/>
            <label for="FileName">File Name:</label>
            <input type="text" id="FileName" name="FileName" value="Excel"/>
            <br /><br />
            <label for="Type">File Format:</label>
            <input type="text" id="Type" name="type" value="xlsx" />
            <br /><br />
            <input type="submit" value="Convert Excel Format"/>
    </form>
    

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

先頭に戻る

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

WinFormsアプリケーション

HTMLアプリケーション

以下に示す、Excelファイル形式間で変換を行うREST APIサービスのデモサンプルをご覧ください。

先頭に戻る