2012-08-01 158 views
1

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

回答

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; 
} 
+0

感谢您的帮助,但我们系统是一个winforms唯一系统。 – 2012-08-01 20:46:53

+0

@GregWilliams - 我用一个不需要'System.Web'的解决方案更新了我的答案。 – gilly3 2012-08-01 22:38:02