博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
word、excel、ppt转换成html
阅读量:5821 次
发布时间:2019-06-18

本文共 7033 字,大约阅读时间需要 23 分钟。

将word、excel、ppt转换成html,调用office的API;转换后的html样式会丢失

1 using System;  2 using System.Collections.Generic;  3   4 using System.IO;  5 using System.Threading;  6 using System.Collections;  7 using Excel = Microsoft.Office.Interop.Excel;  8 using Word = Microsoft.Office.Interop.Word;  9  10 ///  11 /// Summary description for Class1 12 ///  13 public class Office2Html 14 { 15     public Office2Html() 16     { 17     } 18  19     public static void WordToHtml(string filePath) 20     { 21         Word.Application word = new Word.Application(); 22         Type wordType = word.GetType(); 23         Word.Documents docs = word.Documents; 24         Type docsType = docs.GetType(); 25         Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { (object)filePath, true, true }); 26         Type docType = doc.GetType(); 27         string strSaveFileName = filePath.ToLower().Replace(Path.GetExtension(filePath).ToLower(), ".html"); 28         object saveFileName = (object)strSaveFileName; 29         docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML }); 30         docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null); 31         wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); 32         Thread.Sleep(3000);//为了使退出完全,这里阻塞3秒 33     } 34  35  36     public static void WordToHtml(string filePath, string htmlFilePaht) 37     { 38         Word.Application word = new Word.Application(); 39         Type wordType = word.GetType(); 40         Word.Documents docs = word.Documents; 41         Type docsType = docs.GetType(); 42         Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { (object)filePath, true, true }); 43         Type docType = doc.GetType(); 44         string strSaveFileName = htmlFilePaht; 45         object saveFileName = (object)strSaveFileName; 46         docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML }); 47         docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null); 48         wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); 49         Thread.Sleep(3000);//为了使退出完全,这里阻塞3秒 50     } 51  52  53  54     public static void ExcelToHtml(string filePath) 55     { 56         string str = string.Empty; 57         Excel.Application oApp = new Excel.Application(); 58         Excel.Workbook oBook = null; 59         Excel.Worksheet oSheet = null; 60         Excel.Workbooks oBooks = null; 61  62         oBooks = oApp.Application.Workbooks; 63         oBook = oBooks.Open(filePath, 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); 64         oSheet = (Excel.Worksheet)oBook.Worksheets[1]; 65         object htmlFile = filePath.ToLower().Replace(Path.GetExtension(filePath).ToLower(), ".html"); 66         object ofmt = Excel.XlFileFormat.xlHtml; 67         oBook.SaveAs(htmlFile, ofmt, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 68  69         NAR(oSheet); 70         GC.Collect(); 71         object osave = false; 72         oBook.Close(osave, Type.Missing, Type.Missing); 73         GC.Collect(); 74         NAR(oBook); 75         GC.Collect(); 76         NAR(oBooks); 77         GC.Collect(); 78         oApp.Quit(); 79         NAR(oApp); 80         GC.Collect(); 81         KillProcess("EXCEL"); 82         Thread.Sleep(3000);//保证完全关闭 83     } 84  85  86  87     public static void ExcelToHtml(string filePath, string htmlFilePaht) 88     { 89         string str = string.Empty; 90         Excel.Application oApp = new Excel.Application(); 91         Excel.Workbook oBook = null; 92         Excel.Worksheet oSheet = null; 93         Excel.Workbooks oBooks = null; 94  95         oBooks = oApp.Application.Workbooks; 96         oBook = oBooks.Open(filePath, 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); 97         oSheet = (Excel.Worksheet)oBook.Worksheets[1]; 98         object htmlFile = htmlFilePaht; 99         object ofmt = Excel.XlFileFormat.xlHtml;100         oBook.SaveAs(htmlFile, ofmt, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);101 102         NAR(oSheet);103         GC.Collect();104         object osave = false;105         oBook.Close(osave, Type.Missing, Type.Missing);106         NAR(oBook);107         GC.Collect();108         NAR(oBooks);109         GC.Collect();110         oApp.Quit();111         NAR(oApp);112         GC.Collect();113         KillProcess("EXCEL");114         Thread.Sleep(3000);//保证完全关闭115 116     }117 118     //依据时间杀灭进程119     private static void KillProcess(string processName)120     {121         System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName(processName);122         foreach (System.Diagnostics.Process p in process)123         {124             if (DateTime.Now.Second - p.StartTime.Second > 0 && DateTime.Now.Second - p.StartTime.Second < 5)125             {126                 p.Kill();127             }128         }129     }130 131     //关闭对象132     private static void NAR(object o)133     {134         try135         {136             while (System.Runtime.InteropServices.Marshal.ReleaseComObject(o) > 0) ;137         }138         catch { }139         finally140         {141             o = null;142         }143     }144 }

 

     注意:请设置web.config的system.web加点中添加一下配置,操作excel或word需要管理员的权限,否则报错“否则会提示检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。”

方案一:

<identity impersonate="true" userName="服务器管理员用户名" password="服务器管理员"/>

方案二:

1:在服务器上安装office的Excel软件.

2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"
3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"
4:在"DCOM配置"中找到"Microsoft Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应
用程序属性"对话框
5:点击"标识"标签,选择"交互式用户"
6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加
一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.
7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK
SERVICE"用户,然后赋予"本地访问"权限.
这样,我们便配置好了相应的Excel的DCOM权限.

      在项目引用中右击选择添加引用,选择COM里面选择Microft Office 12.0 object Library和Microft Excel 12.0 object Library分别点确定即可!同样如果要引用World选Microft World 12.0 object Library!  2003/2007共通处理方式 分别为11或12版本  添加.net中Microsoft.Office.Interop.excel;  添加.net中Office 

 

程序员的基础教程:

转载地址:http://blfdx.baihongyu.com/

你可能感兴趣的文章
记录一次蚂蚁金服前端电话面试
查看>>
RecyclerView预加载机制源码分析
查看>>
直播源码开发视频直播平台,不得不了解的流程
查看>>
Ubuntu上的pycrypto给出了编译器错误
查看>>
聊聊flink的RestClientConfiguration
查看>>
在CentOS上搭建git仓库服务器以及mac端进行克隆和提交到远程git仓库
查看>>
測試文章
查看>>
Flex很难?一文就足够了
查看>>
【BATJ面试必会】JAVA面试到底需要掌握什么?【上】
查看>>
微服务b2b b2c o2o电子商务云平台
查看>>
上手kubernetes之前,你应该知道这6件事
查看>>
属性动画给target的setXXX回调
查看>>
PHP 中的设计模式详解
查看>>
算法经典
查看>>
Atom
查看>>
Small插件化框架
查看>>
springmvc+mybatis+restful+webservice Jeesz分布式架构
查看>>
使用strace追踪多个进程
查看>>
KVM虚拟化存储池
查看>>
Xamarin只言片语4——Xamarin.Android百度地图绑定
查看>>