由于项目需要,需要一个在线预览office的功能,小编一开始使用的是微软提供的方法,简单快捷,但是不符合小编开发需求,

就另外用了:将文件转换成html文件然后预览html文件的方法。对微软提供的方法感兴趣的小伙伴可以去看一下,够简单直接:word+excle+pdf表格在线浏览

我们来说一下小编使用的方法,这种预览方式基于开源的NPOI+Office COM组件,使用是需要引入这几个动态链接库,总体如下:

C#在线预览文档(word,excel,pdf,txt,png)

预览方式:将文件转换成html文件然后预览html文件

预览word文件:需要引入Interop.Microsoft.Office.Interop.Word.dll(Office COM+组件)

预览Excel文件:需要引入Interop.Microsoft.Office.Interop.Excel.dll(Office COM+组件)

PDF文件直接嵌入到浏览器中进行查看,无需转换(需安装pdf阅读器)(直接使用文件的路径访问即可)

文本文件直接嵌入到浏览器进行查看,无需转换(直接使用文件的路径访问即可)

图片文件直接嵌入到浏览器进行查看,无需转换(直接使用文件的路径访问即可)

下面小编就预览word文件和预览excel文件进行学习一下。

准备工作:

1、创建MVC项目,引入NPOI和office Com组件动态链接库,小编使用的是VS2017,

直接在NuGet里面引入(只演示NPOI的引入,Interop.Microsoft.Office.Interop.Word和Interop.Microsoft.Office.Interop.Excel的引入一样的操作)

2、在Content文件加下面建立一个excel文件和word文件,里面的内容可以自定义

代码编写:

后端代码:

我们准备完成后就开始编写代码进行调试,代码如下,我直接整个控制器粘贴出来。

using Microsoft.Office.Interop.Excel;

using NPOI.SS.UserModel;

using NPOI.XSSF.UserModel;

using System;

using System.Collections.Generic;

using System.Diagnostics;

using System.IO;

using System.Linq;

using System.Web;

using System.Web.Mvc;

namespace WebOnlineWord.Controllers

{

public class HomeController : Controller

{

public ActionResult Index()

{

return View();

}

//C#在线预览文档(word,excel,pdf,txt,png)

//1、预览方式:将文件转换成html文件然后预览html文件

//2、预览word文件:需要引入Interop.Microsoft.Office.Interop.Word.dll(Office COM组件)

//3、预览Excel文件:需要引入Interop.Microsoft.Office.Interop.Excel.dll(Office COM组件)

//4、PDF文件直接嵌入到浏览器中进行查看,无需转换(需安装pdf阅读器)

//5、文本文件直接嵌入到浏览器进行查看,无需转换

//6、图片文件直接嵌入到浏览器进行查看,无需转换

#region Excel预览方法

///

/// excel 转换为html

///

/// 要转换的文档的路径

/// 转换成的html的保存路径

/// 转换后html文件的名字

public JsonResult ExcelToHtml()

{

ResultJson result = new ResultJson();

string path = Server.MapPath("/Content/excel.xlsx");

string savePath = Server.MapPath("/Content/");

string wordFileName = "ExcelToHtml";

string str = string.Empty;

Microsoft.Office.Interop.Excel.Application repExcel = new Microsoft.Office.Interop.Excel.Application();

Microsoft.Office.Interop.Excel.Workbook workbook = null;

Microsoft.Office.Interop.Excel.Worksheet worksheet = null;

workbook = repExcel.Application.Workbooks.Open(path, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];

object htmlFile = savePath + wordFileName + ".html";

string resultUrl = htmlFile.ToString();

object ofmt = Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml;

workbook.SaveAs(htmlFile, ofmt, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

object osave = false;

workbook.Close(osave, Type.Missing, Type.Missing);

repExcel.Quit();

result.str = "/Content/" + wordFileName + ".html"; ;

return Json(result, JsonRequestBehavior.AllowGet);

}

#endregion

#region Excel预览方法

///

/// word 转换为html

///

/// 要转换的文档的路径

/// 转换成的html的保存路径

/// 转换后html文件的名字

public JsonResult WordToHtml()

{

ResultJson result = new ResultJson();

string path = Server.MapPath("/Content/word.docx");

string savePath = Server.MapPath("/Content/");

string wordFileName = "WordToHtml";

Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();

Type wordType = word.GetType();

Microsoft.Office.Interop.Word.Documents docs = word.Documents;

Type docsType = docs.GetType();

Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { (object)path, true, true });

Type docType = doc.GetType();

string strSaveFileName = savePath + wordFileName + ".html";

object saveFileName = (object)strSaveFileName;

docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML });

docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null);

wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);

result.str = "/Content/" + wordFileName + ".html"; ;

return Json(result, JsonRequestBehavior.AllowGet);

}

#endregion

public class ResultJson

{

public bool res { get; set; }

public string info { get; set; }

public string str { get; set; }

}

}

}

前端代码:

代码如下,我直接整个页面粘贴出来。

@{

ViewBag.Title = "Home Page";

}

//预览excel

function ExcelToHtml() {

$.ajax({

url: "/Home/ExcelToHtml",

data: "",

type: "POST",

async: false,

dataType: "json",

success: function (data) {

//获得窗口的垂直位置

var iWidth = 1400;

var iHeight = 800;

var iTop = (window.screen.availHeight - 30 - iHeight) / 2;

//获得窗口的水平位置

var iLeft = (window.screen.availWidth - 10 - iWidth) / 2;

window.open(data.str, '_blank', 'height=' + iHeight + ',innerHeight=' + iHeight + ',width=' + iWidth + ',innerWidth=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no');

}

});

}

//预览word

function WordToHtml() {

$.ajax({

url: "/Home/WordToHtml",

data: "",

type: "POST",

async: false,

dataType: "json",

success: function (data) {

//获得窗口的垂直位置

var iWidth = 1400;

var iHeight = 800;

var iTop = (window.screen.availHeight - 30 - iHeight) / 2;

//获得窗口的水平位置

var iLeft = (window.screen.availWidth - 10 - iWidth) / 2;

window.open(data.str, '_blank', 'height=' + iHeight + ',innerHeight=' + iHeight + ',width=' + iWidth + ',innerWidth=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no');

}

});

}

效果查看:

在线预览excel:

如下,很显然读取到了我们事先准备好的excel。

在线预览excel:

如下,很显然读取到了我们事先准备好的word。

总结:

到这里一个简单的在线预览office就完成了,这是一个初始手稿,需要优化后续功能。

感兴趣的朋友可以关注一波,我们下次学习怎么在线编辑,实时保存(每改一下保存一下)和一键保存(编辑完成后点击保存)

转载请注明出处,谢谢!

作者:熊泽-学习中的苦与乐

nopi word to html,C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)...相关推荐

  1. html怎么转换到百度,类似百度文库在线预览文档flash版(支持word、excel、ppt、pdf)+在线预览文档html版...

    类似百度文库在线预览文档flash版(支持word.excel.ppt.pdf)+在线预览文档html版 (1).将文档转换为html,只支持支持office文档 (2).将文档转换为flash,实现 ...

  2. 在线预览文档 Office Online

    前言 一直想学习做个在线预览文档的功能,今天使用Office Online Server 2016进行实现在线预览功能. 服务器版本选择:Office Online Server 2016搭配wind ...

  3. 微软office online在线预览文档 可配置url参数

    excel url地址: https://view.officeapps.live.com/op/view.aspx? src=http://demo.com/stu.xlsx // 文档路径(url ...

  4. 微软office online在线预览文档及url参数

    https://view.officeapps.live.com/op/embed.aspx?src= 参数: wdHideGridlines=True // 隐藏网格线(有参数即为true) wdH ...

  5. vue如何在线预览及下载word文档

    最近遇到个需求,说要在线预览及下载word文档,尝试了很多方法以后,发现有一个方法是比较好用的,故来分享一波,希望大家也可以在评论中告知更多实现的方法~ https://view.officeapps ...

  6. 【前端实现在线预览ppt、word、xls、pdf、视频】

    前端实现在线预览ppt.word.xls.pdf.视频 一. 预览ppt.word.xls 注意:无法打开文档? 二. pdf 三. 视频预览 一. 预览ppt.word.xls 转载地址: http ...

  7. vue 在线预览、下载word、pdf文件

    vue 在线预览.下载word.pdf文件 最近项目用vue-cli3要实现word和pdf文档的在线预览和下载,在网上看到各位大佬们各种办法,发现踩坑无数,还是没弄出来,最后发现还是是自己想复杂了 ...

  8. office 文档 在线预览功能实现(word,excel,pdf,ppt等多种格式)——使用https://view.xdocin.com/view 提示文档过期——基础积累

    web实现office文档在线预览功能--基础积累 最近遇到一个需求,就是要实现多种文档链接的在线预览,最简单的方式就是通过window.open(url地址)的方式来实现. 但是如果要求是在一个弹窗 ...

  9. java word在线预览_java实现word转pdf在线预览(前端使用PDF.js;后端使用openoffice、aspose)...

    背景 之前一直是用户点击下载word文件到本地,然后使用office或者wps打开.需求优化,要实现可以直接在线预览,无需下载到本地然后再打开. 随后开始上网找资料,网上资料一大堆,方案也各有不同,大 ...

最新文章

  1. python代码使用正则化模块re检查字符串是否只含有要求指定的字符
  2. 程序员面试题精选100题(11)-求二元查找树的镜像[数据结构]
  3. 机器学习中的高斯过程简介-好文
  4. 查看oracle数据库的连接数以及用户 (转:http://blog.itpub.net/24558279/viewspace-752293/)
  5. Hadoop学习之yarn
  6. 在 Windows 中实现 Java 本地方法-Java native 关键词
  7. java编程创建警告_java – 无法阻止ant生成编译器Sun专有API警告
  8. rust工作台可以拾取吗_10台铝型材工作台一周交货可以吗
  9. Remote Desktop Connection 7.0
  10. yuv和rgb画面质量谁好_图像色彩空间YUV和RGB的差别
  11. 街道字符识别赛题理解
  12. 开源的UDP加速工具UDPspeeder介绍
  13. 关于“运放“这些知识点
  14. 如何开展性能测试工作
  15. 小程序自定义导航栏指南
  16. 防火墙技术之----包过滤(Packet Filter)
  17. 酉变换 matlab,数字图像处理:原理与实践(MATLAB版)
  18. 关于openGL, openGL ES, openVG及android中2D调用关系的报告
  19. java,NIO非阻塞式网络通信DEMO.
  20. [图]Microsoft Word 历史版本纵览

热门文章

  1. 欧姆龙NJ/NX基于Sysmac Studio的EIP通讯 方式
  2. 2021-08-09[RoarCTF2019]黄金6年、从娃娃抓起
  3. 高斯旋转热源与双椭球热源_【干货】论焊接,3D打印模拟的热源模型——焊缝、3D打印高度变换模拟...
  4. ubuntu18给当前用户安装cuda11.2 图文教程 、 配置cuDNN8.1 ——【一文读懂】
  5. spring-mybatis.xml 里mapperLocations 配置多路径
  6. 黑苹果是否会成为mac电脑的竞争对手?
  7. 外卖骑手困在算法,美团困在了利益中
  8. activiti工作流研究——画流程图
  9. Backtrader(十六)- Order订单 - order_target_xxx
  10. ReactNative 深层连结