Create Excel or PDF files on Azure
The following examples demonstrate how to use GemBox.Spreadsheett in Azure Functions and Azure App Services. To create an Azure function, search for "Azure Functions" in a new project dialog. To avoid any potential issues with GemBox.Spreadsheet, we recommend using the newer versions of Azure Functions (v3 or above). The following is an Azure function project file: The following example shows how you can create an Excel spreadsheet using GemBox.Spreadsheet in an Azure Function. Note that saving to XPS and image formats (like PNG and JPG) currently works only on Azure Functions that target .NET Framework. App Service is a fully managed platform for building, deploying, and scaling web apps. To publish an application to Azure App service, you need to: 1. Pick Azure as publish target. 2. Pick Azure App Service as a specific target. 3. Specify existing App Service or create a new one. You can use the full functionality of GemBox.Spreadsheet on Azure Virtual Machine, Azure Cloud Services, and Azure Functions. But for App Services, there are few rendering limitations: These features currently have WPF dependencies, requiring a .NET Windows Desktop Runtime. However, we plan to provide cross-platform support for them in future releases.Azure Functions
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.3" />
<PackageReference Include="GemBox.Spreadsheet" Version="*" />
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using GemBox.Spreadsheet;
public static class GemBoxFunction
{
[FunctionName("GemBoxFunction")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
ILogger log)
{
// If using the Professional version, put your serial key below.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
var workbook = new ExcelFile();
var worksheet = workbook.Worksheets.Add("Hello World");
worksheet.Cells[0, 0].Value = "Hello";
worksheet.Cells[0, 1].Value = "World";
var fileName = "Output.xlsx";
var options = SaveOptions.XlsxDefault;
using (var stream = new MemoryStream())
{
workbook.Save(stream, options);
return new FileContentResult(stream.ToArray(), options.ContentType) { FileDownloadName = fileName };
}
}
}
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.Azure.WebJobs
Imports Microsoft.Azure.WebJobs.Extensions.Http
Imports Microsoft.AspNetCore.Http
Imports Microsoft.Extensions.Logging
Imports GemBox.Spreadsheet
Module GemBoxFunction
<FunctionName("GemBoxFunction")>
Async Function Run(
<HttpTrigger(AuthorizationLevel.Anonymous, "get", Route := Nothing)> req As HttpRequest,
log As ILogger) as Task(Of IActionResult)
' If using the Professional version, put your serial key below.
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY")
Dim workbook As New ExcelFile()
Dim worksheet = workbook.Worksheets.Add("Hello World")
worksheet.Cells(0, 0).Value = "Hello"
worksheet.Cells(0, 1).Value = "World"
Dim fileName = "Output.xlsx"
Dim options = SaveOptions.XlsxDefault
Using stream As New MemoryStream()
workbook.Save(stream, options)
Return New FileContentResult(stream.ToArray(), options.ContentType) With { .FileDownloadName = fileName }
End Using
End Function
End Module
Azure App Services
Limitations on App Services
ConvertToImageSource
and ConvertToXpsDocument
methods.