Infopath form to HTML using csharp -- 金大昊(jindahao)

I know converting Infopath form to HTML is pain task. Recently i have worked on one assignment where i need to send infopath form as email. So sending browser based infopath as email content is not possible so i decided to convert Infopath form to HTML and attach to email message. I have tried many method to convert infopath to html but all are ended with pain. At the end i found good solution so we can convert infopath form to html. I would like to share this approach because i’m sure you won’t get good solution by searching internet. Best method is using .net programming and using XSLT transform approach we can convert infopath form to HTML content. You can find the below steps to html conversion.

Creating the XSL file form infopath form 

  1. Open infopath form using Infopath form designer.
  2. Go to File -> Click on ‘Save as Source files’ menu will ask for location.  Save the content
  3. Goto saved location and you can find views.xsl file, It will be in XSLT format.
  4. Copy the views.xsl file to sharepoint 12hive Layout folder.

Below c# method used to convert xsl file to HTML. 

public XslCompiledTransform getXSLTemplate(SPSite Site, string templateName)
{
XslCompiledTransform transform = new XslCompiledTransform();
try
{
//Reading the Template
WebClient client = new WebClient();
client.Credentials = CredentialCache.DefaultCredentials;
Stream stream = client.OpenRead(Site.RootWeb.Url + "/_layouts/" + templateName + ".xsl")
// load stylesheet into the transformer
using (XmlTextReader stylesheet = new XmlTextReader(stream))
{
   transform.Load(stylesheet);
}
stream.Close();
}
catch (Exception ex){throw ex} 
return transform;
}

Calling below method will return the html string

XslCompiledTransform transform = getXSLTemplate(page, templateName);
StringWriter sWriter = new StringWriter();
HtmlTextWriter writer = new HtmlTextWriter(sWriter);

// read the contents (XML) out of the InfoPath form
using (XmlReader reader = new XmlTextReader(spFile.OpenBinaryStream()))
{
XmlTextWriter results = new XmlTextWriter(writer.InnerWriter); 

// Perform the transformation
transform.Transform(reader, results);
reader.Close();
} 

That’s it, Simple isn’t it?  If you found this post useful then you can donate me to encourage writing more articles using below link.

转载于:https://www.cnblogs.com/jindahao/archive/2012/10/25/2739010.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值