How to Retrieve Workbook JSON in Console in ASP.NET MVC Spreadsheet?
This knowledge base article explains how to retrieve the Workbook JSON of the ASP.NET MVC Spreadsheet in a Console Application.
To achieve this, create a console application using the .NET 8.0 framework and add a FrameworkReference to Microsoft.AspNetCore.App in the .csproj file, as shown below
[ConsoleApp1.csproj]:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageReference Include="Microsoft.AspNetCore.Http.Features" Version="5.0.17" />
<PackageReference Include="Syncfusion.EJ2.Spreadsheet.AspNet.Core" Version="26.2.8" />
</ItemGroup>
</Project>
The Microsoft.AspNetCore.App FrameworkReference includes the package Microsoft.AspNetCore.Razor, which is necessary for processing the Excel files using the Syncfusion.EJ2.Spreadsheet.AspNet.Core package and also includes all the necessary ASP.NET Core-related packages and supports IFormFile in the console application.
Now, you need to open the Excel file as a stream and then convert the stream as a FormFile and pass it to the Open API of spreadsheet, which processes the Excel file and returns the spreadsheet-compatible Workbook JSON.
[Program.cs]:
using System;
using System.IO;
using Syncfusion.EJ2.Spreadsheet;
using Microsoft.AspNetCore.Http;
class Program
{
static void Main(string[] args)
{
string fileName = "Sample";
string projectDirectory = Directory.GetParent(AppDomain.CurrentDomain.BaseDirectory).Parent.Parent.Parent.FullName;
string documentPath = Path.Combine(projectDirectory, "Files", fileName + ".xlsx");
try
{
OpenRequest open = new OpenRequest();
// Open the file using a FileStream
FileStream fs = new FileStream(documentPath, FileMode.Open, FileAccess.Read);
byte[] tmpBytes = new byte[fs.Length];
fs.Read(tmpBytes, 0, Convert.ToInt32(fs.Length));
MemoryStream outputStream = new MemoryStream(tmpBytes);
// Converting the stream to IFormFile
IFormFile formFile = new FormFile(outputStream, 0, outputStream.Length, fileName, fileName + ".xlsx");
open.File = formFile;
// Open method will process the Excel file and returns the spreadsheet compatible workbook JSON.
var result = Workbook.Open(open);
// Close the FileStream
fs.Close();
Console.WriteLine(result);
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
}
Sample Link: https://www.syncfusion.com/downloads/support/directtrac/general/ze/ConsoleApp11610340305
Output: