Skip to content

Commit 055d18e

Browse files
Added HtmlService
1 parent c3f2f28 commit 055d18e

File tree

8 files changed

+100
-9
lines changed

8 files changed

+100
-9
lines changed

src/jQueryDatatableServerSideNetCore/Controllers/TestRegistersController.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -140,22 +140,23 @@ public async Task<IActionResult> ExportTable([FromQuery] string format, [FromFor
140140

141141
var resultList = await result.ToListAsync();
142142

143-
byte[] dataByteArray;
144-
145143
switch (format)
146144
{
147145
case ExportFormat.Excel:
148-
dataByteArray = await _exportService.ExportToExcel(resultList);
149-
150146
return File(
151-
dataByteArray,
147+
await _exportService.ExportToExcel(resultList),
152148
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
153149
"data.xlsx");
154150

155151
case ExportFormat.Csv:
156-
dataByteArray = _exportService.ExportToCsv(resultList);
157-
158-
return File(dataByteArray, "application/csv", "data.csv");
152+
return File(_exportService.ExportToCsv(resultList),
153+
"application/csv",
154+
"data.csv");
155+
156+
case ExportFormat.Html:
157+
return File(_exportService.ExportToHtml(resultList),
158+
"application/csv",
159+
"data.html");
159160
}
160161

161162
return null;

src/jQueryDatatableServerSideNetCore/Data/ExportFormat.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ public class ExportFormat
1010
public const string Excel = "excel";
1111
public const string Csv = "csv";
1212
public const string CsvDelimiter = ",";
13+
public const string Html = "html";
1314
}
1415
}

src/jQueryDatatableServerSideNetCore/Program.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using jQueryDatatableServerSideNetCore.Services.CsvService;
33
using jQueryDatatableServerSideNetCore.Services.ExcelService;
44
using jQueryDatatableServerSideNetCore.Services.ExportService;
5+
using jQueryDatatableServerSideNetCore.Services.HtmlService;
56
using Microsoft.AspNetCore.Identity;
67
using Microsoft.EntityFrameworkCore;
78
using Microsoft.OpenApi.Models;
@@ -27,6 +28,7 @@
2728
builder.Services.AddScoped<IExportService, ExportService>();
2829
builder.Services.AddScoped<IExcelService, ExcelService>();
2930
builder.Services.AddScoped<ICsvService, CsvService>();
31+
builder.Services.AddScoped<IHtmlService, HtmlService>();
3032

3133
// Register the Swagger generator, defining 1 or more Swagger documents
3234
builder.Services.AddSwaggerGen(c =>

src/jQueryDatatableServerSideNetCore/Services/ExportService/ExportService.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using jQueryDatatableServerSideNetCore.Models.DatabaseModels;
22
using jQueryDatatableServerSideNetCore.Services.CsvService;
33
using jQueryDatatableServerSideNetCore.Services.ExcelService;
4+
using jQueryDatatableServerSideNetCore.Services.HtmlService;
45
using System.Text;
56

67
namespace jQueryDatatableServerSideNetCore.Services.ExportService
@@ -9,11 +10,13 @@ public class ExportService : IExportService
910
{
1011
private readonly IExcelService _excelService;
1112
private readonly ICsvService _csvService;
13+
private readonly IHtmlService _htmlService;
1214

13-
public ExportService(IExcelService excelService, ICsvService csvService)
15+
public ExportService(IExcelService excelService, ICsvService csvService, IHtmlService htmlService)
1416
{
1517
_excelService = excelService;
1618
_csvService = csvService;
19+
_htmlService = htmlService;
1720
}
1821

1922
public async Task<byte[]> ExportToExcel(List<TestRegister> registers)
@@ -26,5 +29,9 @@ public byte[] ExportToCsv(List<TestRegister> registers)
2629
return _csvService.Write(registers);
2730
}
2831

32+
public byte[] ExportToHtml(List<TestRegister> registers)
33+
{
34+
return _htmlService.Write(registers);
35+
}
2936
}
3037
}

src/jQueryDatatableServerSideNetCore/Services/ExportService/IExportService.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,7 @@ public interface IExportService
1010
Task<byte[]> ExportToExcel(List<TestRegister> registers);
1111

1212
byte[] ExportToCsv(List<TestRegister> registers);
13+
14+
byte[] ExportToHtml(List<TestRegister> registers);
1315
}
1416
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
using System.ComponentModel.DataAnnotations;
2+
using System.Reflection;
3+
using System.Text;
4+
5+
namespace jQueryDatatableServerSideNetCore.Services.HtmlService
6+
{
7+
public class HtmlService : IHtmlService
8+
{
9+
public byte[] Write<T>(IList<T> registers)
10+
{
11+
StringBuilder sb = new StringBuilder();
12+
13+
sb.Append("<table>\n");
14+
sb.Append("\t<thead>\n");
15+
sb.Append("\t\t<tr>\n");
16+
17+
Type type = typeof(T);
18+
PropertyInfo[] properties = type.GetProperties();
19+
20+
for (var i = 0; i < properties.Length; i++)
21+
{
22+
string value = properties[i].Name;
23+
24+
var attribute = properties[i].GetCustomAttribute(typeof(DisplayAttribute));
25+
if (attribute != null)
26+
{
27+
value = (attribute as DisplayAttribute).Name;
28+
}
29+
30+
sb.Append("\t\t\t<td>");
31+
sb.Append(value);
32+
sb.Append("</td>\n");
33+
}
34+
35+
sb.Append("\t\t</tr>\n");
36+
sb.Append("\t</thead>\n");
37+
sb.Append("\t<tbody>\n");
38+
39+
foreach (var register in registers)
40+
{
41+
sb.Append("\t\t<tr>\n");
42+
43+
for (var i = 0; i < properties.Length; i++)
44+
{
45+
sb.Append("\t\t\t<td>");
46+
sb.Append(properties[i].GetValue(register, null));
47+
sb.Append("</td>\n");
48+
}
49+
50+
sb.Append("\t\t</tr>\n");
51+
}
52+
53+
sb.Append("\t</tbody>\n");
54+
sb.Append("</table>");
55+
56+
return Encoding.ASCII.GetBytes(sb.ToString());
57+
}
58+
}
59+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace jQueryDatatableServerSideNetCore.Services.HtmlService
2+
{
3+
public interface IHtmlService
4+
{
5+
byte[] Write<T>(IList<T> registers);
6+
}
7+
}

src/jQueryDatatableServerSideNetCore/wwwroot/js/app.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ $(document).ready(function () {
2727
action: function () {
2828
exportToCsv();
2929
}
30+
},
31+
{
32+
text: 'HTML',
33+
action: function () {
34+
exportToHtml();
35+
}
3036
}
3137
],
3238
// Searching Setups
@@ -135,5 +141,11 @@ function exportToExcel() {
135141
function exportToCsv() {
136142
renderDownloadForm("csv");
137143

144+
$("#export-to-file-form").submit();
145+
}
146+
147+
function exportToHtml() {
148+
renderDownloadForm("html");
149+
138150
$("#export-to-file-form").submit();
139151
}

0 commit comments

Comments
 (0)