123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- using System.Linq;
- using System.Text;
- namespace MediaBrowser.Api.Reports
- {
- /// <summary> A report export. </summary>
- public class ReportExport
- {
- /// <summary> Export to CSV. </summary>
- /// <param name="reportResult"> The report result. </param>
- /// <returns> A string. </returns>
- public string ExportToCsv(ReportResult reportResult)
- {
- StringBuilder returnValue = new StringBuilder();
- returnValue.AppendLine(string.Join(";", reportResult.Headers.Select(s => s.Name.Replace(',', ' ')).ToArray()));
- if (reportResult.IsGrouped)
- foreach (ReportGroup group in reportResult.Groups)
- {
- foreach (ReportRow row in reportResult.Rows)
- {
- returnValue.AppendLine(string.Join(";", row.Columns.Select(s => s.Name.Replace(',', ' ')).ToArray()));
- }
- }
- else
- foreach (ReportRow row in reportResult.Rows)
- {
- returnValue.AppendLine(string.Join(";", row.Columns.Select(s => s.Name.Replace(',', ' ')).ToArray()));
- }
- return returnValue.ToString();
- }
- /// <summary> Export to excel. </summary>
- /// <param name="reportResult"> The report result. </param>
- /// <returns> A string. </returns>
- public string ExportToExcel(ReportResult reportResult)
- {
- string style = @"<style type='text/css'>
- BODY {
- font-family: Arial;
- font-size: 12px;
- }
- TABLE {
- font-family: Arial;
- font-size: 12px;
- }
- A {
- font-family: Arial;
- color: #144A86;
- font-size: 12px;
- cursor: pointer;
- text-decoration: none;
- font-weight: bold;
- }
- DIV {
- font-family: Arial;
- font-size: 12px;
- margin-bottom: 0px;
- }
- P, LI, DIV {
- font-size: 12px;
- margin-bottom: 0px;
- }
- P, UL {
- font-size: 12px;
- margin-bottom: 6px;
- margin-top: 0px;
- }
- H1 {
- font-size: 18pt;
- }
- H2 {
- font-weight: bold;
- font-size: 14pt;
- COLOR: #C0C0C0;
- }
- H3 {
- font-weight: normal;
- font-size: 14pt;
- text-indent: +1em;
- }
- H4 {
- font-size: 10pt;
- font-weight: normal;
- }
- H5 {
- font-size: 10pt;
- font-weight: normal;
- background: #A9A9A9;
- COLOR: white;
- display: inline;
- }
- H6 {
- padding: 2 1 2 5;
- font-size: 11px;
- font-weight: bold;
- text-decoration: none;
- margin-bottom: 1px;
- }
- UL {
- line-height: 1.5em;
- list-style-type: disc;
- }
- OL {
- line-height: 1.5em;
- }
- LI {
- line-height: 1.5em;
- }
- A IMG {
- border: 0;
- }
- table.gridtable {
- color: #333333;
- border-width: 0.1pt;
- border-color: #666666;
- border-collapse: collapse;
- }
- table.gridtable th {
- border-width: 0.1pt;
- padding: 8px;
- border-style: solid;
- border-color: #666666;
- background-color: #dedede;
- }
- table.gridtable tr {
- background-color: #ffffff;
- }
- table.gridtable td {
- border-width: 0.1pt;
- padding: 8px;
- border-style: solid;
- border-color: #666666;
- background-color: #ffffff;
- }
- </style>";
- string Html = @"<!DOCTYPE html>
- <html xmlns='http://www.w3.org/1999/xhtml'>
- <head>
- <meta http-equiv='X-UA-Compatible' content='IE=8, IE=9, IE=10' />
- <meta charset='utf-8'>
- <title>Emby Reports Export</title>";
- Html += "\n" + style + "\n";
- Html += "</head>\n";
- Html += "<body>\n";
- StringBuilder returnValue = new StringBuilder();
- returnValue.AppendLine("<table class='gridtable'>");
- returnValue.AppendLine("<tr>");
- returnValue.AppendLine(string.Join("", reportResult.Headers.Select(s => string.Format("<th>{0}</th>", s.Name)).ToArray()));
- returnValue.AppendLine("</tr>");
- if (reportResult.IsGrouped)
- foreach (ReportGroup group in reportResult.Groups)
- {
- returnValue.AppendLine("<tr>");
- returnValue.AppendLine("<th scope='rowgroup' colspan='" + reportResult.Headers.Count + "'>" + (string.IsNullOrEmpty(group.Name) ? " " : group.Name) + "</th>");
- returnValue.AppendLine("</tr>");
- foreach (ReportRow row in group.Rows)
- {
- ExportToExcelRow(reportResult, returnValue, row);
- }
- returnValue.AppendLine("<tr>");
- returnValue.AppendLine("<th style='background-color: #ffffff;' scope='rowgroup' colspan='" + reportResult.Headers.Count + "'>" + " " + "</th>");
- returnValue.AppendLine("</tr>");
- }
- else
- foreach (ReportRow row in reportResult.Rows)
- {
- ExportToExcelRow(reportResult, returnValue, row);
- }
- returnValue.AppendLine("</table>");
- Html += returnValue.ToString();
- Html += "</body>";
- Html += "</html>";
- return Html;
- }
- private static void ExportToExcelRow(ReportResult reportResult,
- StringBuilder returnValue,
- ReportRow row)
- {
- returnValue.AppendLine("<tr>");
- returnValue.AppendLine(string.Join("", row.Columns.Select(s => string.Format("<td>{0}</td>", s.Name)).ToArray()));
- returnValue.AppendLine("</tr>");
- }
- }
- }
|