数据库表:Sofa.
字段: id,title,content.
通过Word文档中的内容象表中插入数据.一个Word文档为一列数据.
我现将Word文档转化成Html,存储在项目中一个文件夹中.,同时将Word文档名称为title,word文档地址为content.存储到数据表中.作为一列数据.代码如下:
public void WordToHtml(string FileAdd, string SaveAdd)
{
StringBuilder sb = new StringBuilder();
Microsoft.Office.Interop.Word.ApplicationClass appclass = new Microsoft.Office.Interop.Word.ApplicationClass();
Type wordtype = appclass.GetType();
Microsoft.Office.Interop.Word.Documents docs = appclass.Documents;//获取Document
Type docstype = docs.GetType();
// object filename = @"D:\软文-深入剖析KGC按摩椅的功能特色配图0626.doc";//Word文件的路径
object filename = FileAdd;
Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docstype.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new object[] { filename, true, true });//打开文件
Type doctype = doc.GetType();
object savefilename = SaveAdd;//生成HTML的路径和名子
// object savefilename = @"D:\gg.html";//生成HTML的路径和名子
doctype.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { savefilename, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML });//另存为Html格式
wordtype.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, appclass, null);//退出
Thread.Sleep(3000);//为了使退出完全,这里阻塞3秒
StreamReader objreader = new StreamReader(savefilename.ToString(), System.Text.Encoding.GetEncoding("GB2312")); //以下内容是为了在Html中加入对本身Word文件的下载
FileStream fs = new FileStream(savefilename.ToString().Split('.').GetValue(0).ToString() + "$.html", FileMode.Create);
StreamWriter streamHtmlHelp = new System.IO.StreamWriter(fs, System.Text.Encoding.GetEncoding("GB2312"));
//streamHtmlHelp.WriteLine("<a href='E:\\AA.html'>源文件下载</a><br>");
string str = "";
do
{
str = objreader.ReadLine();
// sb.Append(str + "\n");
sb.Replace("<Html>", "");
sb.Replace("<body>", "");
streamHtmlHelp.WriteLine(str);
}
while (str != "</html>");
streamHtmlHelp.Close();
objreader.Close();
// msg.InnerHtml = sb.ToString();
File.Delete(savefilename.ToString());
File.Move(savefilename.ToString().Split('.').GetValue(0).ToString() + "$.html", savefilename.ToString());
}
protected void Btn_FileUpload_Click(object sender, EventArgs e)
{
string fileadd = FileUpload_File.PostedFile.FileName;
string cont=FileUpload_File.FileName;
string [] str=cont.Split('.');
string filesave=str[0];
WordToHtml(fileadd,this.MapPath("Word\\"+ filesave + ".html"));
Model.Title = cont;
Model.Cont = fileadd;
Model.Date=System.DateTime.Now.ToString("yyyy-MM-dd");
Model.Img="";
BC.Add(Model);
}
成功添加一条数据之后在我项目中Word文件夹中添加了2个文件.XXX.html和XXX.files.
Q1:XXX.html中图片和文字部分有重叠.
Q2:如何将Sofa表中Content字段.也就是Html文档中的内容作为一个字段显示到GridView或者DateList控件中.
放在列表中就没必要显示了吧,要看给个链接打开个新窗口看。
但是新窗口中我一样要使用母版页阿.
@Duoroc:
即使就要在列表显示,那还是得弄个页面,放在iframe里来显示。
在table中放一个iframe窗体,在把html塞进去
可以当做附件下载下来看也行。
或者 你直接保存到本地的一个文件夹下面,就跟图片是的,不存二进制流,只是村一个固定的路径。
需要看的时候,用iframe直接指向路径即可。