当ブログでは、以前にもAzure FunctionsでDioDocs(ディオドック)を利用する記事を公開しており、その当時はAzure Functionsの「インプロセスモデル」を使用していました。しかし、このインプロセスモデルは2026年11月10日でサポート終了がアナウンスされています。
また、インプロセスモデルでは .NET 8までがサポート対象になっており、.NET 9以降では分離ワーカーモデルを使用する必要があります。
そこで本記事では、今後の移行先になるAzure Functionsの「分離ワーカーモデル」で「DioDocs(ディオドック)」を使用した関数を作成し、実行した際にExcelやPDFファイルを出力する方法について紹介します。
目次
実装する内容
Visual StudioでAzure Functionsアプリケーションを作成します。このアプリケーションにはHTTPトリガーを使用してHTTPリクエストで実行する関数を追加します。関数の実行時にDioDocsを使用してExcelとPDFファイルを作成し、クエリパラメータで受け取った文字列を追加します。その後、作成したExcelとPDFファイルをFileContentResult
クラスを使用して直接ローカルへ出力する、といった処理を実装します。
アプリケーションを作成
以下のドキュメントを参考にAzure Functionsアプリケーションを作成していきます。
Visual Studio 2022でプロジェクトテンプレート「Azure Functions」を選択して[次へ]をクリックします。

プロジェクト名「DioDocsFileExportFunctionIsolatedApp」を入力して[次へ]をクリックします。

Azure Functionsの追加情報を入力します。「Functions worker」は「.NET 8 Isolated (長期的なサポート)」を選択、「Function」は「Http trigger」を選択して[作成]をクリックします。

DioDocsFileExportFunctionIsolatedAppプロジェクトが作成されます。

NuGetパッケージの追加
Visual Studioの「NuGet パッケージ マネージャー」からDioDocsのパッケージDioDocs.Excel.ja
、DioDocs.Pdf.ja
をインストールします。

DioDocs for Excelを使うコードを追加
DioDocs for ExcelでExcelファイルを作成するコードを追加してFunction1
を以下のように更新します。
[Function("Function1")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
{
_logger.LogInformation("C# HTTP trigger function processed a request.");
string? name = req.Query["name"].FirstOrDefault();
string requestBody = new StreamReader(req.Body).ReadToEndAsync().Result;
dynamic? data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
string Message = string.IsNullOrEmpty(name)
? "Hello, World!!"
: $"Hello, {name}!!";
Workbook workbook = new();
workbook.Worksheets[0].Range["A1"].Value = Message;
byte[] output;
using (MemoryStream ms = new())
{
workbook.Save(ms, SaveFileFormat.Xlsx);
output = ms.ToArray();
}
return new FileContentResult(output, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
{
FileDownloadName = "Result.xlsx"
};
}
DioDocs for PDFを使う関数を追加
ソリューションエクスプローラーからDioDocsFileExportFunctionIsolatedAppプロジェクトを右クリックして[追加]-[新しい Azure 関数]を選択して、DioDocsでPDFファイルを作成する関数Function2
を追加します。


関数のテンプレートを選択します。Http Trigger
を選択して[追加]をクリックします。

DioDocs for PDFを使うコードを追加
DioDocs for PDFでPDFファイルを作成するコードを追加してFunction2
を以下のように更新します。
[Function("Function2")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
{
_logger.LogInformation("C# HTTP trigger function processed a request.");
string? name = req.Query["name"].FirstOrDefault();
string requestBody = new StreamReader(req.Body).ReadToEndAsync().Result;
dynamic? data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
string Message = string.IsNullOrEmpty(name)
? "Hello, World!!"
: $"Hello, {name}!!";
GcPdfDocument doc = new();
GcPdfGraphics g = doc.NewPage().Graphics;
g.DrawString(Message,
new TextFormat() { Font = StandardFonts.Helvetica, FontSize = 12 },
new PointF(72, 72));
byte[] output;
using (MemoryStream ms = new())
{
doc.Save(ms, false);
output = ms.ToArray();
}
return new FileContentResult(output, "application/pdf")
{
FileDownloadName = "Result.pdf"
};
}
デバッグ実行で確認
作成したAzure Functionsアプリケーションをローカルでデバッグ実行して確認します。Visual Studioからデバッグ実行すると、Windowsターミナルで以下のように表示されます。

アプリケーションに含まれる関数のURLはhttp://localhost:72792/api/Function1
、http://localhost:7292/api/Function2
となっています。それぞれURLにクエリパラメータと文字列?name=DioDocs for Excel
と?name=DioDocs for PDF
を追加して、それぞれの関数をブラウザで実行します。


ローカルのフォルダに保存された「Result.xlsx」、「Result.pdf」を確認します。クエリパラメータで渡した文字列「DioDocs for Excel」、「DioDocs for PDF」が表示されていれば成功です。


Azureへデプロイ
作成したAzure FunctionsアプリケーションをAzureへデプロイして確認します。ソリューションエクスプローラーからDioDocsFileExportFunctionIsolatedAppプロジェクトを右クリックして[発行]を選択します。

公開するターゲットは「Azure」、特定のターゲットは「Azure Function App (Windows)」を選択します。


アプリケーションの名前やリソースグループなどを入力して新しいインスタンスを作成します。以下の画面に切り替わったら[完了]をクリックします。

これで公開の準備が完了しました。Visual Studioで[発行]をクリックして作成したAzure FunctionアプリケーションをAzureへデプロイします。

公開が完了するとメッセージが表示されます。

デプロイしたアプリケーションを確認
Azureポータルで「概要」を選択するとAzure Functionsアプリケーションに含まれる関数Function1
、Function2
が表示されます。

関数Function1
をクリックして「コードとテスト」を選択します。「関数の URL の取得」が表示されるのでこちらをクリックします。

関数のURLが表示されます。ここでは特定の関数URLへのアクセスのみを許可するキーを使用する「default (ファンクション キー)」のURLをコピーして使用します。

コピーしたURLをブラウザに張り付けて、さらにクエリパラメータと文字列&name=DioDocs for Excel
を追加します。

関数を実行するとデバッグ実行時と同じように、クエリパラメータで渡した文字列が追加されたExcelファイルがローカルのフォルダに出力されます。関数Function2
も同じ手順で確認できます。
動作を確認できるAzure Functionsアプリケーションのサンプルはこちらです。
さいごに
弊社Webサイトでは、製品の機能を気軽に試せるデモアプリケーションやトライアル版も公開していますので、こちらもご確認いただければと思います。
また、ご導入前の製品に関するご相談やご導入後の各種サービスに関するご質問など、お気軽にお問合せください。