我有一个问题,希望有人能回答。我正在使用.Net 3.5 Winforms和SpreadSheetGear 2010组件,需要知道是否有免费或低成本的方法将Excel工作簿转换为HTML?是否有一个好的XSLT转换或一些低成本或开源组件?我可以在程序上将Excel文件保存到OpenXMLWorkbook,但该组件不允许保存到html。任何帮助,将不胜感激。感谢。
答案 0 :(得分:0)
使用ASP.Net并按照Excel to DataGrid Samples演示的代码进行操作。您始终可以在项目中包含对System.Web
的引用。
但是,即使没有ASP.Net,并且坚持.Net客户端配置文件,从DataTable
生成HTML表也很简单。使用AntiXss Library(download)将数据编码为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;
}