TowerSoft.HtmlToExcel
2.4.0
dotnet add package TowerSoft.HtmlToExcel --version 2.4.0
NuGet\Install-Package TowerSoft.HtmlToExcel -Version 2.4.0
<PackageReference Include="TowerSoft.HtmlToExcel" Version="2.4.0" />
paket add TowerSoft.HtmlToExcel --version 2.4.0
#r "nuget: TowerSoft.HtmlToExcel, 2.4.0"
// Install TowerSoft.HtmlToExcel as a Cake Addin
#addin nuget:?package=TowerSoft.HtmlToExcel&version=2.4.0
// Install TowerSoft.HtmlToExcel as a Cake Tool
#tool nuget:?package=TowerSoft.HtmlToExcel&version=2.4.0
TowerSoft HtmlToExcel
Small Nuget package that uses AngleSharp to read an HTML table and generate an Excel file using ClosedXML
Usage
Single sheet
string htmlString = "<table><tbody><tr><td>Cell contents</td></tr></tbody></table>";
byte[] fileData = new WorkbookGenerator().FromHtmlString(htmlString);
Multiple sheets
string htmlString1 = "<table><tbody><tr><td>Cell contents</td></tr></tbody></table>";
string htmlString2 = "<table><tbody><tr><td>Cell contents</td></tr></tbody></table>";
byte[] fileData;
using (WorkbookBuilder workbookBuilder = new WorkbookBuilder()) {
workbookBuilder.AddSheet("sheet1", htmlString1);
workbookBuilder.AddSheet("sheet2", htmlString2);
fileData = workbookBuilder.GetAsByteArray();
}
Settings
Some settings do not work if there are any colspans in the table. This is because Excel does not allow tables with merged cells and those settings only work in tables.
Setting Name | Default Value | Description |
---|---|---|
AutofitColumns | true | Enables/disables fitting the width of the columns to fit the contents. |
ShowFilter | true | Enables/disables showing table filters. Does not work with the table has any colspans. |
ShowRowStripes | true | Enables/disables row stripes. Does not work with the table has any colspans. |
PrintingPageOrientationPortrait | true | Sets the printing page default orientation to Portrait (Landscape if false) |
ShowGridLines | false | Enables/disables grid lines |
You can change the settings using HtmlToExcellSettings
and passing it in the constructor of htmlToEzxel
HtmlToExcelSettings settings = HtmlToExcelSettings.Defaults;
settings.AutofitColumns = false;
settings.ShowFilter = false;
settings.ShowRowStripes = false;
// Using custom settings with a single sheet
byte[] fileData new WorkbookGenerator(settings).FromHtmlString(htmlString);
// Using custom settings with multiple sheets
using (WorkbookBuilder workbookBuilder = new WorkbookBuilder(settings) {
// Settings can also be used in the AddSheet method which overrides the setting on the WorkbookBuilder
workbookBuilder.AddSheet("sheetName", htmlString, settings)
}
Individual Cell Options
Attribute Name | Expected Data Type | Comments |
---|---|---|
data-excel-hyperlink | URI | Creates a hyperlink on the cell. Must be a parsable absolute URI. |
data-excel-bold | Boolean | Sets if the cell style will be set to bold. |
data-wrap | Boolean | Sets if the cell text is wrapped. |
data-type | String | Sets the data type for the cell. Valid options are: Text, Number, Boolean, DateTime, TimeSpan |
data-format | String | Sets the cell format. Only works with data-type="Number" and data-type="DateTime" |
data-excel-comment | String | Adds a comment to the cell |
data-excel-comment-author | String | Sets the author for the comment |
data-horizontal-alignment | String | Sets the cell horizontal alignment. Valid options are: Center, CenterContinuous, Distributed, Fill, General, Justify, Left, Right |
colspan | Integer | Merges this cell with the following cells |
data-font-size | Integer | Sets the cell font size |
data-font-color | String(HexColor) | Sets the font color of the cell. Must be a valid hex color code, Example: #006688 |
data-background-color | String(HexColor) | Sets the fill/background color of the cell. Must be a valid hex color code, Example: #006688 |
ASP Core Example
Add the following code to your project to render a view to a string: CustomController.cs
Use this example to return the file to the client. Make sure you change the inherited class to your custom controller class.
public class HomeController : CustomController {
public IActionResult ExcelFile() {
var model = //Get model data
string htmlString = RenderViewAsync("viewName", model, true);
byte[] fileData = new WorkbookGenerator().FromHtmlString(htmlString);
return File(fileData, MimeType.xlsx, "filename.xlsx");
}
}
MVC 5 Example
Add the following code to your project to render a view to a string: ViewExtensions.cs
public ActionResult GetExcelFile() {
var model = //Get model data
string htmlString = PartialView("ViewName", model).RenderToString();
byte[] fileData = new WorkbookGenerator().FromHtmlString(htmlString);
return File(fileData, MimeType.xlsx, "filename.xlsx");
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- AngleSharp (>= 1.0.7)
- ClosedXML (>= 0.102.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.