我是一个马甲,没办法,分不够了,只好这样了:)
我想问的就是一个进程将HTML代码转换成word文档保存到客户端和服务器端的问题。
其实这个问题思归大哥给出了答复,可是我本来很菜,e文又不好,捣鼓了半天还是没搞定,思归大哥给的文章链接如下:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q325791我的代码如下,是马甲大哥和孟子大哥给的:以下代码怎么运行的时候说是:未处理的“System.UnauthorizedAccessException”类型的异常出现在 未知模块 中。
其他信息: 拒绝访问。
然后又跳出一个对话框:没有用于当前位置的源代码。怎么回事呢?新建一个类(这是马甲大哥给我的代码,谢谢了!):
using System;
using System.Windows.Forms;namespace Test
{
public class SaveAsDoc
{
public string htmlstr="<b>html</b>";
[STAThread]
public void Save()
{
Word.ApplicationClass oWordApp = new Word.ApplicationClass();
object missing=System.Reflection.Missing.Value;
object path=@"c:\q.doc";//改成你自己要保存的路径
try
{
string ClipTemp="Version:0.9\nStartHTML:-1\nEndHTML:-1\nStartFragment:000076\nEndFragment:000128\n<!DOCTYPE>\n<HTML><BODY>{0}</BODY></HTML>";
ClipTemp=string.Format(ClipTemp,htmlstr);
DataObject d=new DataObject();
d.SetData(DataFormats.Html,true,ClipTemp);
Clipboard.SetDataObject(d);
Word.Document oWordDoc = oWordApp.Documents.Add(ref missing, ref missing,ref missing, ref missing);
oWordDoc.Activate();
oWordApp.Selection.Paste();
oWordDoc.SaveAs(ref path,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing);
}
catch(Exception err)
{
throw err;
}
finally
{
oWordApp.Application.Quit(ref missing, ref missing, ref missing);
}
}
}
}
在WebPage B.aspx的保存按钮事件里这样调用:
private void Button2_Click(object sender, System.EventArgs e)
{
SaveAsDoc sd=new SaveAsDoc();
sd.htmlstr=ConvertToString("B.aspx");
System.Threading.Thread t=new System.Threading.Thread(new System.Threading.ThreadStart(sd.Save));
t.ApartmentState=ApartmentState.STA;
t.Start();
}ConvertToString("B.aspx")是采用的孟子大哥的代码:
private string RenderPage(string pageLocation)
{
System.Web.HttpContext context = System.Web.HttpContext.Current;
StringBuilder result = new StringBuilder(1024);
context.Server.Execute(pageLocation,
new HtmlTextWriter(new StringWriter(result)));
return result.ToString();
}
我想问的就是一个进程将HTML代码转换成word文档保存到客户端和服务器端的问题。
其实这个问题思归大哥给出了答复,可是我本来很菜,e文又不好,捣鼓了半天还是没搞定,思归大哥给的文章链接如下:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q325791我的代码如下,是马甲大哥和孟子大哥给的:以下代码怎么运行的时候说是:未处理的“System.UnauthorizedAccessException”类型的异常出现在 未知模块 中。
其他信息: 拒绝访问。
然后又跳出一个对话框:没有用于当前位置的源代码。怎么回事呢?新建一个类(这是马甲大哥给我的代码,谢谢了!):
using System;
using System.Windows.Forms;namespace Test
{
public class SaveAsDoc
{
public string htmlstr="<b>html</b>";
[STAThread]
public void Save()
{
Word.ApplicationClass oWordApp = new Word.ApplicationClass();
object missing=System.Reflection.Missing.Value;
object path=@"c:\q.doc";//改成你自己要保存的路径
try
{
string ClipTemp="Version:0.9\nStartHTML:-1\nEndHTML:-1\nStartFragment:000076\nEndFragment:000128\n<!DOCTYPE>\n<HTML><BODY>{0}</BODY></HTML>";
ClipTemp=string.Format(ClipTemp,htmlstr);
DataObject d=new DataObject();
d.SetData(DataFormats.Html,true,ClipTemp);
Clipboard.SetDataObject(d);
Word.Document oWordDoc = oWordApp.Documents.Add(ref missing, ref missing,ref missing, ref missing);
oWordDoc.Activate();
oWordApp.Selection.Paste();
oWordDoc.SaveAs(ref path,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing);
}
catch(Exception err)
{
throw err;
}
finally
{
oWordApp.Application.Quit(ref missing, ref missing, ref missing);
}
}
}
}
在WebPage B.aspx的保存按钮事件里这样调用:
private void Button2_Click(object sender, System.EventArgs e)
{
SaveAsDoc sd=new SaveAsDoc();
sd.htmlstr=ConvertToString("B.aspx");
System.Threading.Thread t=new System.Threading.Thread(new System.Threading.ThreadStart(sd.Save));
t.ApartmentState=ApartmentState.STA;
t.Start();
}ConvertToString("B.aspx")是采用的孟子大哥的代码:
private string RenderPage(string pageLocation)
{
System.Web.HttpContext context = System.Web.HttpContext.Current;
StringBuilder result = new StringBuilder(1024);
context.Server.Execute(pageLocation,
new HtmlTextWriter(new StringWriter(result)));
return result.ToString();
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货