Skip to content

support ClosedXML #7

@jochenwezel

Description

@jochenwezel

Xlsx2Html code might be added as following:

Imports ClosedXML.Excel
Imports System.Net
Imports System.Text

Public Module ClosedXmlBasicHtml
    Public Function XlsxToBasicHtml(path As String, Optional sheetIndex As Integer = 1) As String
        Using wb As New XLWorkbook(path)
            Dim ws = wb.Worksheet(sheetIndex)
            Dim used = ws.RangeUsed()
            If used Is Nothing Then Return "<!doctype html><html><body>(leer)</body></html>"

            Dim sb As New StringBuilder()
            sb.AppendLine("<!doctype html><html><meta charset=""utf-8""><body><table border=""1"" cellspacing=""0"" cellpadding=""4"">")

            Dim firstDataRow = used.FirstRow().RowNumber()

            For r = used.FirstRow().RowNumber() To used.LastRow().RowNumber()
                sb.Append("<tr>")
                For c = used.FirstColumn().ColumnNumber() To used.LastColumn().ColumnNumber()
                    Dim cell = ws.Cell(r, c)
                    Dim tag = If(r = firstDataRow, "th", "td")

                    ' einfache Styles
                    Dim styles As New List(Of String)
                    If cell.Style.Font.Bold Then styles.Add("font-weight:bold")
                    If cell.Style.Font.Italic Then styles.Add("font-style:italic")
                    Select Case cell.Style.Alignment.Horizontal
                        Case XLAlignmentHorizontalValues.Center : styles.Add("text-align:center")
                        Case XLAlignmentHorizontalValues.Right  : styles.Add("text-align:right")
                        Case XLAlignmentHorizontalValues.Left   : styles.Add("text-align:left")
                    End Select

                    Dim styleAttr = If(styles.Count > 0, $" style=""{String.Join(";", styles)}""", "")
                    Dim text = WebUtility.HtmlEncode(cell.GetFormattedString())

                    sb.Append($"<{tag}{styleAttr}>{text}</{tag}>")
                Next
                sb.AppendLine("</tr>")
            Next

            sb.AppendLine("</table></body></html>")
            Return sb.ToString()
        End Using
    End Function
End Module

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions