2012-08-01 167 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