使用EPPlus从Excel文件生成HTML表格?

时间:2015-05-13 20:25:03

标签: excel html-table epplus

我想从excel文件生成HTML表格。 EPPlus包提供了一个用于操作excel文件的.net API。我很高兴知道是否可以使用EPPlus从Excel文件生成HTML表格代码?我无法在文档中找到任何内容,但是直觉告诉我应该有办法做到这一点

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您正在寻找内置于EPPlus中的内容,我还没有看到任何可以直接导出HTML的内容。

最好的办法是将Excel文件导入EPPlus并将数据提取到集合或DataTable。那应该是非常直接的。

从那里开始,有大量关于如何将其转换为html表的文档。快速搜索将其作为第一个打击:

Datatable to html Table

答案 1 :(得分:0)

我写了一些代码,您可以尝试一下。

static void Main(string[] args)
    {
        ExcelPackage p = new ExcelPackage(new System.IO.FileInfo("X.XLSX"));
        var sheet = p.Workbook.Worksheets["HMTD"];
        var noOfCol = sheet.Dimension.End.Column;
        var noOfRow = sheet.Dimension.End.Row;
        StringBuilder s = new StringBuilder();
        s.Append("<table>");
        for (int i = 1; i < noOfRow; i++)
        {
            s.Append("<tr>");
            for (int j = 1; j < noOfCol; j++)
            {
                int colspan = 1;
                int rowspan = 1;
                if (!sheet.Cells[i, j].Merge || (sheet.Cells[i, j].Merge && isFirstMergeRange(sheet, sheet.Cells[i, j].Address, ref colspan, ref rowspan)))
                {
                    s.Append("<td rowspan='" + rowspan + "' colspan='" + colspan + "'>");
                    if(sheet.Cells[i,j] != null && sheet.Cells[i,j].Value != null)
                        s.Append(sheet.Cells[i,j].Value.ToString());
                    s.Append("</td>");
                }
            }
            s.Append("</tr>");
        }
        s.Append("</table>");
        System.IO.File.WriteAllText("duc.html",s.ToString());
        Console.ReadKey();
    }
    private static bool isFirstMergeRange(ExcelWorksheet sheet, string address, ref int colspan, ref int rowspan)
    {
        colspan = 1;
        rowspan = 1;
        foreach (var item in sheet.MergedCells)
        {
            var s = item.Split(':');
            if (s.Length > 0 && s[0].Equals(address)){

                ExcelRange range = sheet.Cells[item];
                colspan = range.End.Column - range.Start.Column;
                rowspan = range.End.Row - range.Start.Row;
                if(colspan == 0) colspan = 1;
                if(rowspan == 0) rowspan = 1;
                return true;
            }
        }
        return false;
    }