`

ASP上传word文档,转化为HTML(C# 实现)

    博客分类:
  • C#
阅读更多

      对于上一篇所说的公开平台,有个功能是发布公开信息。原本这功能的操作是,在一个TextArea(在线编辑器如xheditor)里编写内容,编写文本、上传图片等,然后保存把TextArea中的内容存入数据库。当需要浏览该信息时,在网页上显示。这样挺好的,很多网站都是这么做的,包括ITEYE写blog时,也是在这在线编辑器中编辑的。但是客户说了,每次要上传图片都要一张一张地上传,太麻烦了啊,能够把word文档中的内容直接复制到TextArea就好了。对于此,word文档中复制文本过来是没问题的,但是复制图片过来,问题就大了,在线编辑器不能把复制粘贴过来的图片自动上传到服务器啊,就算是HTML5上传也不行啊,我不会弄啊,google了好久也不会啊……腾讯的QQ邮箱可以做到复制word文档里的图片,直接粘贴到邮件正文里。他是怎么做到的啊!GMAIL都木有这功能啊!

      既然以上所说的功能不能实现(小弟实力有限唉),那退而求其次,应该可以用其他方法替代,最坏就是大不了跟客户说这功能做不了,咋地吧……我想了想,word文档有个“另存为”功能,把doc转换为html的。那能不能让客户上传word文档,系统把doc转为html,保存好。当群众查询信息时,直接展示这个html不就好了!好,就这么办!

 

首先,在asp页面上添加上传文件的file标签:

 

<tr>
<td align="right">上传word文档:</td>
<td colspan="2"><input type="file" id="file1" runat="server" /> </td>
</tr>

 

 

然后编写后台代码,在用户提交时对file1进行处理。

在C#源文件的开头,要添加using微软office的东西:

using WORD=Microsoft.Office.Interop.Word;

 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using WORD=Microsoft.Office.Interop.Word;//要添加这个,用于处理word

 对于Microsoft.Office.Interop.Word,有个傻*问题折腾了我大半个早上,唉……新手

 

当我添加Microsoft.Office.Interop.Word时,Visual studio提示:命名空间“Microsoft.Office”中不存在类型或命名空间名称“Office"。Google了好久,又是修复OFFICE2007,又是引入COM中的com/Microsoft Office 12.0 Object Library,都不行啊,要么提示不存在“Office”,要么提示不存在“Interop”。最后只能百度知道了,没想到百度知道的第一个搜索结果就解决了这个问题。只要在项目的Bin中引入以下DLL文件就可以了:Microsoft.Office.Interop.Word.dll,可以从附件下载。

 

解决这个问题后,就可以写btnOK_Click方法,来处理word文档了。

贴上代码:

 

protected void btnOK_Click(object sender, EventArgs e)
{
 if (file1!=null&&file1.PostedFile!=null&&file1.PostedFile.ContentLength > 0)
            {
                //上传word文档
                HttpPostedFile wordFile = file1.PostedFile;
                string wordFileName = wordFile.FileName.ToLower();
                string fileExt = Path.GetExtension(wordFileName).ToLower();
                //判断扩展名
                if (String.IsNullOrEmpty(fileExt) || (fileExt!=".doc"&&fileExt!=".docx") )
                {
                    //TODO 提示 上传失败!只能上传后缀名为doc或docx的word文档。" 并返回
                }
                //判断文件大小
                if (wordFile.InputStream == null || wordFile.InputStream.Length > maxSize)
                {
                    //TODO 提示 上传失败!上传的文件过大 并返回
                }

                //把word文档保存在服务器中
                string randomFileName = WebBase.GetNewNo();//随机生成文件名(WebBase是自己写的一个工具类)
                string newFileName = randomFileName + fileExt;//保存在服务器上的word文档的文件名
                string localPath = WebBase.ServerMapPath(dirPath + imgPath);//保存在服务器上的文件夹的路径
                if (!Directory.Exists(localPath))
                {
                    Directory.CreateDirectory(localPath);
                }
                wordFile.SaveAs(localPath + newFileName);

                //把word文档转化为html
                WORD.ApplicationClass word = new WORD.ApplicationClass();
                Type wordType = word.GetType();
                WORD.Documents docs = word.Documents;
                // 打开文件
                Type docsType = docs.GetType();
                //打开一个Word文档
                string wordPathInSever = localPath + newFileName;
                Microsoft.Office.Interop.Word.Document doc = (WORD.Document)docsType.InvokeMember("Open",
                System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { wordPathInSever, true, true });

                // 转换格式,另存为html
                Type docType = doc.GetType();
                string htmlFileName = randomFileName + ".html";
                //被转换的html文档保存的位置
                object saveFileName = localPath + htmlFileName;
                //保存
                docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
                        null, doc, new object[] { saveFileName, WORD.WdSaveFormat.wdFormatFilteredHTML });

                //一定要先关闭,否则退出Word时不能释放资源
                docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null);
                //退出Word
                wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
             }
}

 这样就成功把word转化为html了,然后再往数据库中记录一些信息(如保存的html的路径等),当用户查询时,根据这些信息找到html页面,直接显示这html就可以了。

 

 

 

分享到:
评论

相关推荐

    C# ASP.NET - 将Web网页导出至Word文档

    在C# ASP.NET环境中,将Web网页导出到Word文档是一项常见的需求,这通常涉及到HTML到DOC或DOCX格式的转换。以下是一些关键的知识点和步骤,详细解释了如何实现这一功能: 首先,理解基本原理:Web网页通常是HTML...

    Word转HTML文档asp.net+c#源代码

    在IT行业中,转换文档格式是一项常见的任务,例如将Word文档转换为HTML格式,这在Web应用开发中尤其有用,因为HTML是网页的标准语言。本文将详细介绍如何使用ASP.NET和C#来实现这一功能,以及涉及的相关知识点。 ...

    C#的在线编辑word

    3. **文档转换技术**:由于浏览器无法直接操作Word文档,开发者可能使用了某种转换库,如Apache POI、OpenXML SDK,或者第三方服务如Aspose、Spire.Doc等,将Word文档转换为HTML或其他Web兼容格式,以便在前端展示和...

    C#将WORD转换为PDF的Demo

    本示例"C#将WORD转换为PDF的Demo"是使用C#编程语言在ASP.NET环境中实现的一个具体应用,旨在帮助开发者了解如何将Microsoft Word文档转换为PDF格式。此程序依赖于服务器上安装的Office 2010,因为它利用了Microsoft ...

    将word文档转换成html页面文件

    标题中的“将word文档转换成html页面文件”指的是利用编程技术将Microsoft Word文档转换成HTML网页格式。在IT行业中,这种转换通常用于在线发布、网站内容编辑或数据迁移等场景。C#是一种广泛使用的编程语言,尤其在...

    c#调用wps组件进行文件转换,如html与word,excel互转

    总结来说,C#结合WPS组件可以实现多种文件格式的转换,为开发者提供了一种高效且兼容的解决方案。对于初学者来说,理解COM组件的使用,掌握文件操作和数据转换的原理,是非常重要的学习步骤。通过实践,你可以更好地...

    asp.net 将word转化为html格式的项目源码 word to html C#

    在这个项目中,我们关注的是如何将Word文档转换为HTML格式,这在很多场景下都非常有用,例如在线预览、文档共享或者将Word内容嵌入到网页中。这个项目源码使用C#语言实现,C#是.NET Framework的主要开发语言,以其...

    C#实现导出Wxcel表格和Word文档

    在IT行业中,C#和ASP.NET常常用于构建Web应用程序,其中一种常见的需求是将数据库中的数据导出到用户友好的格式,如Excel和Word文档。本文将深入探讨如何使用C#和ASP.NET来实现这个功能。 首先,让我们关注C#在处理...

    PDFBox pdf 转换为word文档

    在这个特定的场景中,我们关注的是使用PDFBox将PDF文档转换为Word文档的功能。 PDF到Word的转换是一个常见的需求,因为尽管PDF格式在保持文档样式和布局方面非常出色,但有时用户可能需要在Word中进行编辑或进一步...

    在网页上实现word文档一样的操作

    在网页上实现类似Word文档的功能是一项复杂而富有挑战性的任务,尤其当涉及到使用C#这样的后端编程语言时。此项目的目标是创建一个在线编辑器,让用户能够在浏览器中完成与在Microsoft Word中相同的操作,如文本编辑...

    Swagger接口导出Word.rar

    本教程将围绕如何使用C#和.NET来通过Swagger将接口导出为Word文档进行详解。 首先,你需要在你的项目中引入Swagger。可以通过NuGet包管理器安装`Swashbuckle.AspNetCore`,这将为你的ASP.NET Web API项目添加...

    swagger文档离线导出,word、pdf、html

    - **Aspose.Words.dll**:Aspose.Words 是另一个强大的文档处理库,可以用于生成、编辑和转换 Word 文档。 - **Swashbuckle.Core.dll 和 Newtonsoft.Json.dll**:这两个库分别用于 Swagger 的实现和 JSON 处理。...

    C#asp.net导出Word

    这个函数可能接收数据源(如数据库查询结果)作为输入,然后将其转换并写入Word文档。 值得注意的是,虽然Microsoft Office Interop简单易用,但它的性能并不理想,特别是在高并发的Web环境中。因此,对于大规模...

    Xceed.Words.NET(操作word).rar

    这通常通过将Word文档转换为HTML,然后在前端显示来实现: ```csharp var html = doc.SaveAsHtml(); // 将html发送到前端展示... ``` 此外,Xceed.Words.NET还支持导出文档为PDF、HTML、RTF等多种格式,满足不同...

    【ASP.NET编程知识】C#实现EXCEL数据到TXT文档的转换.docx

    综上所述,C#实现EXCEL数据到TXT文档的转换涉及到文件操作、数据处理、用户交互等多个方面,需要熟练掌握C#的基础知识以及ASP.NET的相关框架。通过这样的转换,可以方便地在不同的数据格式之间进行数据迁移,满足...

    asp.net修改word文字并另存为新的word及pdf

    这个场景下,我们关注的是如何使用C#代码来实现对Word文档的文字修改,并将修改后的文档保存为新的Word格式,同时也能转换为PDF格式。下面我们将详细探讨这个过程涉及的技术和步骤。 首先,我们需要一个能够操作...

    aspose.word 解析word读取及word转pdf、转html

    Aspose.Word是一款强大的编程库,专门用于处理Microsoft Word文档,包括读取、写入、转换和操作DOC、DOCX格式的文件。它提供了多种API,支持多种编程语言,如Java、.NET、PHP等,使得开发者能够轻松地在应用程序中...

    c# word转tif

    在C# ASP.NET环境中,将Word(doc)文档转换为TIFF(TIF)图像文件是一个实用的需求,例如用于扫描文档、存储档案或进行OCR(光学字符识别)等。下面我们将详细探讨这个主题,讲解如何利用C#实现这一转换过程。 ...

    Asp.net学习word文档

    此外,Asp.net还支持将HTML内容转换为Word文档,这在需要将网页内容导出为可打印格式时非常有用。通过使用CSS样式来控制布局,可以创建出结构清晰、格式美观的Word文档。 在处理Word文档时,安全性也是一个重要的...

Global site tag (gtag.js) - Google Analytics