以编程方式将Excel电子表格转换为HTML

时间:2012-08-01 20:32:25

标签: html winforms excel xslt xls

我有一个问题,希望有人能回答。我正在使用.Net 3.5 Winforms和SpreadSheetGear 2010组件,需要知道是否有免费或低成本的方法将Excel工作簿转换为HTML?是否有一个好的XSLT转换或一些低成本或开源组件?我可以在程序上将Excel文件保存到OpenXMLWorkbook,但该组件不允许保存到html。任何帮助,将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

使用ASP.Net并按照Excel to DataGrid Samples演示的代码进行操作。您始终可以在项目中包含对System.Web的引用。

但是,即使没有ASP.Net,并且坚持.Net客户端配置文件,从DataTable生成HTML表也很简单。使用AntiXss Librarydownload)将数据编码为html。然后使用StringBuilder构建HTML。这是一种可用于将任何DataTable转换为html <table>的扩展方法:

using AntiXss = Microsoft.Security.Application;

...

public static String ToHTML(this DataTable dt)
{
    StringBuilder html = new StringBuilder("<table><thead><tr>");
    foreach (DataColumn col in dt.Columns)
    {
        html.AppendFormat("<td>{0}</td>",
            AntiXss.Encoder.HtmlEncode(col.ColumnName));
    }
    html.Append("</tr></thead><tbody>");
    foreach (DataRow row in dt.Rows)
    {
        html.Append("<tr>");
        foreach (var data in row.ItemArray)
        {
            html.AppendFormat("<td>{0}</td>",
                AntiXss.Encoder.HtmlEncode(data.ToString()));
        }
        html.Append("</tr>");
    }
    html.Append("</tbody></table>");
    return html.ToString();
}

要获取整个工作簿的html,另一种扩展方法:

public static List<String> ToHTML(this IWorkBook wb)
{
    List<String> tables = new List<String>();
    DataSet ds = wb.GetDataSet(GetDataFlags.FormattedText);
    foreach (DataTable dt in ds.Tables)
    {
        tables.Add(dt.ToHTML());
    }
    return tables;
}