对于上一篇所说的公开平台,有个功能是发布公开信息。原本这功能的操作是,在一个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文档是一项常见的需求,这通常涉及到HTML到DOC或DOCX格式的转换。以下是一些关键的知识点和步骤,详细解释了如何实现这一功能: 首先,理解基本原理:Web网页通常是HTML...
在IT行业中,转换文档格式是一项常见的任务,例如将Word文档转换为HTML格式,这在Web应用开发中尤其有用,因为HTML是网页的标准语言。本文将详细介绍如何使用ASP.NET和C#来实现这一功能,以及涉及的相关知识点。 ...
3. **文档转换技术**:由于浏览器无法直接操作Word文档,开发者可能使用了某种转换库,如Apache POI、OpenXML SDK,或者第三方服务如Aspose、Spire.Doc等,将Word文档转换为HTML或其他Web兼容格式,以便在前端展示和...
本示例"C#将WORD转换为PDF的Demo"是使用C#编程语言在ASP.NET环境中实现的一个具体应用,旨在帮助开发者了解如何将Microsoft Word文档转换为PDF格式。此程序依赖于服务器上安装的Office 2010,因为它利用了Microsoft ...
标题中的“将word文档转换成html页面文件”指的是利用编程技术将Microsoft Word文档转换成HTML网页格式。在IT行业中,这种转换通常用于在线发布、网站内容编辑或数据迁移等场景。C#是一种广泛使用的编程语言,尤其在...
总结来说,C#结合WPS组件可以实现多种文件格式的转换,为开发者提供了一种高效且兼容的解决方案。对于初学者来说,理解COM组件的使用,掌握文件操作和数据转换的原理,是非常重要的学习步骤。通过实践,你可以更好地...
在这个项目中,我们关注的是如何将Word文档转换为HTML格式,这在很多场景下都非常有用,例如在线预览、文档共享或者将Word内容嵌入到网页中。这个项目源码使用C#语言实现,C#是.NET Framework的主要开发语言,以其...
在IT行业中,C#和ASP.NET常常用于构建Web应用程序,其中一种常见的需求是将数据库中的数据导出到用户友好的格式,如Excel和Word文档。本文将深入探讨如何使用C#和ASP.NET来实现这个功能。 首先,让我们关注C#在处理...
在这个特定的场景中,我们关注的是使用PDFBox将PDF文档转换为Word文档的功能。 PDF到Word的转换是一个常见的需求,因为尽管PDF格式在保持文档样式和布局方面非常出色,但有时用户可能需要在Word中进行编辑或进一步...
在网页上实现类似Word文档的功能是一项复杂而富有挑战性的任务,尤其当涉及到使用C#这样的后端编程语言时。此项目的目标是创建一个在线编辑器,让用户能够在浏览器中完成与在Microsoft Word中相同的操作,如文本编辑...
本教程将围绕如何使用C#和.NET来通过Swagger将接口导出为Word文档进行详解。 首先,你需要在你的项目中引入Swagger。可以通过NuGet包管理器安装`Swashbuckle.AspNetCore`,这将为你的ASP.NET Web API项目添加...
- **Aspose.Words.dll**:Aspose.Words 是另一个强大的文档处理库,可以用于生成、编辑和转换 Word 文档。 - **Swashbuckle.Core.dll 和 Newtonsoft.Json.dll**:这两个库分别用于 Swagger 的实现和 JSON 处理。...
这个函数可能接收数据源(如数据库查询结果)作为输入,然后将其转换并写入Word文档。 值得注意的是,虽然Microsoft Office Interop简单易用,但它的性能并不理想,特别是在高并发的Web环境中。因此,对于大规模...
这通常通过将Word文档转换为HTML,然后在前端显示来实现: ```csharp var html = doc.SaveAsHtml(); // 将html发送到前端展示... ``` 此外,Xceed.Words.NET还支持导出文档为PDF、HTML、RTF等多种格式,满足不同...
综上所述,C#实现EXCEL数据到TXT文档的转换涉及到文件操作、数据处理、用户交互等多个方面,需要熟练掌握C#的基础知识以及ASP.NET的相关框架。通过这样的转换,可以方便地在不同的数据格式之间进行数据迁移,满足...
这个场景下,我们关注的是如何使用C#代码来实现对Word文档的文字修改,并将修改后的文档保存为新的Word格式,同时也能转换为PDF格式。下面我们将详细探讨这个过程涉及的技术和步骤。 首先,我们需要一个能够操作...
Aspose.Word是一款强大的编程库,专门用于处理Microsoft Word文档,包括读取、写入、转换和操作DOC、DOCX格式的文件。它提供了多种API,支持多种编程语言,如Java、.NET、PHP等,使得开发者能够轻松地在应用程序中...
在C# ASP.NET环境中,将Word(doc)文档转换为TIFF(TIF)图像文件是一个实用的需求,例如用于扫描文档、存储档案或进行OCR(光学字符识别)等。下面我们将详细探讨这个主题,讲解如何利用C#实现这一转换过程。 ...
此外,Asp.net还支持将HTML内容转换为Word文档,这在需要将网页内容导出为可打印格式时非常有用。通过使用CSS样式来控制布局,可以创建出结构清晰、格式美观的Word文档。 在处理Word文档时,安全性也是一个重要的...