C#.NET实现Word或Excel文件转为HTML文件

Word文件转html,返回相对路径

 1 private string GetPathByDocToHTML(string strFile)
 2     {
 3         if (string.IsNullOrEmpty(strFile))
 4         {
 5             return "0";//没有文件
 6         }
 7
 8         Microsoft.Office.Interop.Word.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass();
 9         Type wordType = word.GetType();
10         Microsoft.Office.Interop.Word.Documents docs = word.Documents;
11
12         // 打开文件
13         Type docsType = docs.GetType();
14
15         object fileName = strFile;
16
17         Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open",
18         System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { fileName, true, true });
19
20         // 转换格式,另存为html
21         Type docType = doc.GetType();
22         //给文件重新起名
23         string filename = System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() +
24         System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString();
25
26         string strFileFolder = "../html/";
27         DateTime dt = DateTime.Now;
28         //以yyyymmdd形式生成子文件夹名
29         string strFileSubFolder = dt.Year.ToString();
30         strFileSubFolder += (dt.Month < 10) ? ("0" + dt.Month.ToString()) : dt.Month.ToString();
31         strFileSubFolder += (dt.Day < 10) ? ("0" + dt.Day.ToString()) : dt.Day.ToString();
32         string strFilePath = strFileFolder + strFileSubFolder + "/";
33         // 判断指定目录下是否存在文件夹,如果不存在,则创建
34         if (!Directory.Exists(Server.MapPath(strFilePath)))
35         {
36             // 创建up文件夹
37             Directory.CreateDirectory(Server.MapPath(strFilePath));
38         }
39
40         //被转换的html文档保存的位置
41         // HttpContext.Current.Server.MapPath("html" + strFileSubFolder + filename + ".html")
42         string ConfigPath = Server.MapPath(strFilePath + filename + ".html");
43         object saveFileName = ConfigPath;
44
45         /*下面是Microsoft Word 9 Object Library的写法,如果是10,可能写成:
46           * docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
47           * null, doc, new object[]{saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML});
48           * 其它格式:
49           * wdFormatHTML
50           * wdFormatDocument
51           * wdFormatDOSText
52           * wdFormatDOSTextLineBreaks
53           * wdFormatEncodedText
54           * wdFormatRTF
55           * wdFormatTemplate
56           * wdFormatText
57           * wdFormatTextLineBreaks
58           * wdFormatUnicodeText
59         */
60         docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
61         null, doc, new object[] { saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML });
62
63         //docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod,
64         //  null, doc, new object[] { saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML });
65
66         //关闭文档
67         docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod,
68         null, doc, new object[] { null, null, null });
69
70         // 退出 Word
71         wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
72         //转到新生成的页面
73         //return ("/" + filename + ".html");
74
75         //转化HTML页面统一编码格式
76         TransHTMLEncoding(ConfigPath);
77
78         return (strFilePath + filename + ".html");
79     }

Excel文件转HTML,返回相对路径

 1 private string GetPathByXlsToHTML(string strFile)
 2     {
 3         if (string.IsNullOrEmpty(strFile))
 4         {
 5             return "0";//没有文件
 6         }
 7
 8         //实例化Excel
 9         Microsoft.Office.Interop.Excel.Application repExcel = new Microsoft.Office.Interop.Excel.Application();
10         Microsoft.Office.Interop.Excel.Workbook workbook = null;
11         Microsoft.Office.Interop.Excel.Worksheet worksheet = null;
12
13         //打开文件,n.FullPath是文件路径
14         workbook = repExcel.Application.Workbooks.Open(strFile, 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);
15         worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
16
17         //给文件重新起名
18         string filename = System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() +
19         System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString();
20
21         string strFileFolder = "../html/";
22         DateTime dt = DateTime.Now;
23         //以yyyymmdd形式生成子文件夹名
24         string strFileSubFolder = dt.Year.ToString();
25         strFileSubFolder += (dt.Month < 10) ? ("0" + dt.Month.ToString()) : dt.Month.ToString();
26         strFileSubFolder += (dt.Day < 10) ? ("0" + dt.Day.ToString()) : dt.Day.ToString();
27         string strFilePath = strFileFolder + strFileSubFolder + "/";
28         // 判断指定目录下是否存在文件夹,如果不存在,则创建
29         if (!Directory.Exists(Server.MapPath(strFilePath)))
30         {
31             // 创建up文件夹
32             Directory.CreateDirectory(Server.MapPath(strFilePath));
33         }
34         string ConfigPath = Server.MapPath(strFilePath + filename + ".html");
35         object savefilename = (object)ConfigPath;
36
37         object ofmt = Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml;
38         //进行另存为操作
39         workbook.SaveAs(savefilename, 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);
40         object osave = false;
41         //逐步关闭所有使用的对象
42         workbook.Close(osave, Type.Missing, Type.Missing);
43         repExcel.Quit();
44         System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
45         worksheet = null;
46         //垃圾回收
47         GC.Collect();
48         System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
49         workbook = null;
50         GC.Collect();
51         System.Runtime.InteropServices.Marshal.ReleaseComObject(repExcel.Application.Workbooks);
52         GC.Collect();
53         System.Runtime.InteropServices.Marshal.ReleaseComObject(repExcel);
54         repExcel = null;
55         GC.Collect();
56         //依据时间杀灭进程
57         System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("EXCEL");
58         foreach (System.Diagnostics.Process p in process)
59         {
60             if (DateTime.Now.Second - p.StartTime.Second > 0 && DateTime.Now.Second - p.StartTime.Second < 5)
61             {
62                 p.Kill();
63             }
64         }
65
66         return (strFilePath + filename + ".html");
67     }

这里可能会遇到一个问题,由于转化为HTML文件的页面编码可能使得浏览器无法正确解读,所以需要转码,转换代码如下:

 1     private void TransHTMLEncoding(string strFilePath)
 2     {
 3         try
 4         {
 5             System.IO.StreamReader sr = new System.IO.StreamReader(strFilePath, Encoding.GetEncoding(0));
 6             string html = sr.ReadToEnd();
 7             sr.Close();
 8             html = System.Text.RegularExpressions.Regex.Replace(html, @"<meta[^>]*>", "<meta http-equiv=Content-Type content=‘text/html; charset=gb2312‘>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
 9             System.IO.StreamWriter sw = new System.IO.StreamWriter(strFilePath, false, Encoding.Default);
10
11             sw.Write(html);
12             sw.Close();
13         }
14         catch (Exception ex)
15         {
16             Page.RegisterStartupScript("alt", "<script>alert(‘" + ex.Message + "‘)</script>");
17         }
18     }

这样就可以正常在页面上正常显示了

时间: 2024-10-17 23:48:56

C#.NET实现Word或Excel文件转为HTML文件的相关文章

使用 PySide2 开发 Maya 插件系列一:QT Designer 设计GUI, pyside-uic 把 .ui 文件转为 .py 文件

使用 PySide2 开发 Maya 插件系列一:QT Designer 设计GUI, pyside-uic 把 .ui 文件转为 .py 文件 前期准备: 安装 python:https://www.python.org/downloads/ 安装 PySide2:安装 python 后,在安装目录下有 /script 文件夹,里面有 pip.exe ,cmd执行:pip install PySide,pip install PySide2(注意: python2.x 对应 PySide,py

如何通过WPS 2013 API 将Office(Word、Excel和PPT)文件转PDF文件

1. 描述 PDF 文件是一种便携文件格式,是由Adobe公司所开发的独特的跨平台文件格式.PDF文件以PostScript语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,即PDF会忠实地再现原稿的每一个字符.颜色以及图象.可移植文档格式,也称为"便携文档格式",是一种电子文件格式.这种文件格式与操作系统平台无关,也就是说,PDF文件不管是在Windows,Unix还是在苹果公司的Mac OS操作系统中都是通用的.这一特点使它成为在Internet上进行电子文

将Excel文件转为csv文件的python脚本

#!/usr/bin/env python __author__ = "lrtao2010" ''' Excel文件转csv文件脚本 需要将该脚本直接放到要转换的Excel文件同级目录下 支持xlsx 和 xls 格式 在同级目录下生成名为excel_to_csv.csv 的文件,采用UTF-8编码 ''' import xlrd import csv import os #生成的csv文件名 csv_file_name = 'excel_to_csv.csv' def get_exc

将Rmarkdown文件转为pdf文件

knitr包只能够将R markdown文件转为html格式,若想要将其转化为pdf格式,还要安装另一个包 # Install and load package install.packages("rmarkdown") library("rmarkdown") # Convert render("../Your_MD_File.md", output_format="pdf_document") Reference http

python中如何将csv文件转为xls文件

废话开端 要实现将csv文件转换为xls文件,就需要用到python中非常强大的第三方库---pandas.之前基本没用过pandas,对它可以说是一点都不了解,但是最近在工作中要经常处理各种Excel.csv文件,就不得不用到了,也还是处于学习阶段,一边学习,一边总结记录.那我们都知道pandas不仅可以操作Excel,csv,而且还可以处理json.pickle.html.table等等各种类型的数据.功能强大,非常实用,深受广大程序猿的喜爱,实属开发之必备良品啊! 代码实现 from io

用手机如何将Excel格式转为PDF文件

Excel表格是office办公文档最常见的一种格式,它的独特之处就在于它是表格形式,而且这种表格还有计算功能,统计数据.自动求和等.所以整理资料少不了它.通常整理完的资料不希望被改动,所以会将Excel转为PDF格式,那怎样转化呢?接下来交教大家一个用手机转换的简单方法. 转换工具:迅捷PDF转换器 转换工具功能介绍:1 将PDF转换成为不同文件格式2 支持办公文档转换成PDF3 高清转换无乱码4 便捷文档管理功能Excel转PDF操作步骤;1.首先在手机自带的应用市场找到迅捷PDF转换器这个

将Excel文件转为plist文件

1.mac自带launchpad——>其他 ——> 文本编辑 ——> 打开 ——> commod+shift+T(转换成txt格式输入框),将excel文本粘贴进txt文本框——>保存 2.将xx.txt文件拖入工程,按照以下代码转换 NSString *schoolsPath = [[NSBundle mainBundle] pathForResource:@"provinceCity" ofType:@"txt"]; NSStrin

html 实现动态在线预览word、excel、pdf等文件(方便快捷)

https://blog.csdn.net/superKM/article/details/81013304 太方便了 <iframe src='https://view.officeapps.live.com/op/view.aspx?src=http://storage.xuetangx.com/public_assets/xuetangx/PDF/1.xls' width='100%' height='100%' frameborder='1'> </iframe> 原文地址

mac 上将.pem文件转为.pub文件

将密钥上传至Linux服务器,并修改权限.以文件popo.pem为例: chmod 600 popo.pem 修改密钥格式为OpenSSH,如果询问,留空回车: ssh-keygen -p -f popo.pem 生成公钥.pub文件: ssh-keygen -e -f popo.pem >> popo.pem.pub