2012-01-19 50 views
2

我正在从stringBuilder获取数据并将其放入.docx文件。对于.doc扩展名,我们可以直接使用stringBuilder。但是.docx文件存在问题。将html内容导入docx文件

像这样。但它破坏了.docx文件。

strBuilder.Append("".ToString()); strBuilder.Append("".ToString()); 
strBuilder.Append("SI.No ".ToString()); strBuilder.Append("<\table>"); 

FileStream stream = File.Open(@"D:\wordfile3.DOCX", FileMode.Create); 

System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); 

byte[] binaryData = encoding.GetBytes(strBuilder.ToString()); 

for (int i = 0; i < binaryData.Length; i++) 
{ 
    stream.WriteByte(binaryData[i]); 
} 

stream.Flush(); 
stream.Close(); 
+0

文件和DOCX是富文本格式。 (RTF)。研究将html转换为rtf。 (我花了最近几天的时间来研究这个)。只有付费版本才能够完成这项工作。 http://stackoverflow.com/questions/150208/how-do-i-convert-html-to-rtf-rich-text-in-net-without-paying-for-a-component – Doomsknight

回答

2

你混淆了想法。

Doc和Docx有一个复杂的结构,而不仅仅是文本。用任何十六进制查看器打开一个真正的文档或docx文件,看看里面有什么,然后打开你的比较它们

你在这里做什么是你做一个潜在的文本文件,你只需改变扩展名为DOC或DOCX。现在,当这样的文件将被MS Word读取时,ms字将其转换为doc或docx,这不是因为您将其设置为ms字文件,而是因为ms字识别出这是一个文本文件并尝试转换并显示它。

错误的方法。

有一些关于如何从asp.net制作ms word文档的教程,但这不是一种方法,可以编写任何东西并将其保存为docx并等待工作。

https://www.google.com/search?q=how+to+create+ms+word+files+from+asp.net

http://www.codeproject.com/KB/aspnet/wordapplication.aspx