/// <summary> /// word转成html /// </summary> /// <param name="wordFileName">绝对地址</param> public static string wordToHtml(object wordFileName) { try { //判断文件夹是否存在(不存在创建一个) if (!Directory.Exists(HttpContext.Current.Server.MapPath("/WordToHtml"))) { new DirectoryInfo(HttpContext.Current.Server.MapPath("/WordToHtml")).Create(); } //在此处放置用户代码以初始化页面 Microsoft.Office.Interop.Word.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass(); 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[] { wordFileName, true, true }); //转换格式,另存为 Type docType = doc.GetType(); string wordSaveFileName = wordFileName.ToString(); string strSaveFileName = ""; strSaveFileName = wordSaveFileName.Substring(0, wordSaveFileName.Length - 3) + "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); //退出 Word wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); return(saveFileName.ToString()); } catch (Exception ex) { LogHelper.WriteLog(Convert.ToString("Word错误:" + ex.Message + "------------------------------------" + ex.StackTrace)); throw new Exception(ex.Message, ex); } }
/// <summary> /// word转成html /// </summary> /// <param name="wordFileName"></param> private string WordToHtml(object wordFileName, string htmlFileName) { object saveFileName = ""; try { //在此处放置用户代码以初始化页面 Word.ApplicationClass word = new Word.ApplicationClass(); Type wordType = word.GetType(); Word.Documents docs = word.Documents; //打开文件 Type docsType = docs.GetType(); Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { wordFileName, true, true }); //转换格式,另存为 Type docType = doc.GetType(); string wordSaveFileName = wordFileName.ToString(); string strSaveFileName = htmlFileName; saveFileName = (object)strSaveFileName; docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML }); docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null); //退出 Word wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); } catch (Exception ex) { base.ClientScript.RegisterStartupScript(base.GetType(), null, string.Format("<script>alert('{0}');</script>", ex.Message.ToString())); } return(saveFileName.ToString()); }
/// <summary> /// 需要转换的Word文档路径 /// </summary> /// <param name="fileName">完整路径</param> /// <returns>HTML页面路径</returns> private static string WordToHtml(object fileName) { Word.Application word = new Word.Application(); Type wordType = word.GetType(); Word.Documents docs = word.Documents; //打开文件 Type docsType = docs.GetType(); Word.Document doc = (Word.Document)docsType.InvokeMember("Open", BindingFlags.InvokeMethod, null, docs, new object[] { fileName, true, true }); //转换格式,另存 Type docType = doc.GetType(); string wordSaveFileName = fileName.ToString(); string htmlSaveFileName = wordSaveFileName.Substring(0, wordSaveFileName.LastIndexOf(".") + 1) + "html"; object saveFileName = (object)htmlSaveFileName; docType.InvokeMember("SaveAs", BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML }); docType.InvokeMember("Close", BindingFlags.InvokeMethod, null, doc, null); //退出Word wordType.InvokeMember("Quit", BindingFlags.InvokeMethod, null, word, null); return(saveFileName.ToString()); }
public static void ConvertToPDFWithPrinter(String filePath, String destpath) { // file exist & check type if (!filePath.IsNormalized() || !File.Exists(filePath)) { throw new Exception("未指定文件"); } if (!filePath.EndsWith("doc") && !filePath.EndsWith("docx")) { throw new Exception("文件非 word 类型"); } Microsoft.Office.Interop.Word.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass(); 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[] { filePath, true, true }); doc.Application.ActivePrinter = "Microsoft Print to PDF"; Type docType = doc.GetType(); docType.InvokeMember("PrintOut", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { false, false, Microsoft.Office.Interop.Word.WdPrintOutRange.wdPrintAllDocument, destpath }); wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); }
/// <summary> /// Word转成Html /// </summary> /// <param name="path">要转换的文档的路径</param> /// <param name="savePath">转换成html的保存路径</param> /// <param name="wordFileName">转换成html的文件名字</param> public static void Word2Html(string path, string savePath, string wordFileName) { MyWord.Application word = new MyWord.Application(); Type wordType = word.GetType(); MyWord.Documents docs = word.Documents; Type docsType = docs.GetType(); MyWord.Document doc = (MyWord.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { (object)path, true, true }); try { Type docType = doc.GetType(); string strSaveFileName = System.IO.Path.Combine(savePath, $"{wordFileName}.html"); object saveFileName = (object)strSaveFileName; docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, MyWord.WdSaveFormat.wdFormatFilteredHTML }); docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null); wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); } catch { } finally { doc = null; docs = null; word = null; } }
///<summary> /// 将Word文件转换为HTML文件 ///</summary> ///<param name="source_path">Word文件路径(绝对)</param> ///<param name="target_path">生成的Html文件路径(绝对),路径的目录结构必须存在,否则保存失败</param> ///<returns>是否执行成功</returns> public static bool toHtml(string source_path, string target_path) { Word.Application wordApp = new Word.Application(); Type wordType = wordApp.GetType(); Word.Documents docs = wordApp.Documents; Type docsType = docs.GetType(); try { if (File.Exists(target_path)) { File.Delete(target_path); } Word.Document doc = (Word.Document)docsType.InvokeMember("Open", BindingFlags.InvokeMethod, null, docs, new Object[] { source_path, true, true }); Type docType = doc.GetType(); docType.InvokeMember("SaveAs", BindingFlags.InvokeMethod, null, doc, new object[] { target_path, Word.WdSaveFormat.wdFormatFilteredHTML }); return(true); } catch { return(false); } finally { wordType.InvokeMember("Quit", BindingFlags.InvokeMethod, null, wordApp, null); try { wordApp.Quit(); } catch { } Thread.Sleep(3000); } }
/// <summary> /// word转成html /// </summary> /// <param name="wordFileName"></param> private string WordToHtml(object wordFileName, string htmlFileName) { object saveFileName = ""; try { //在此处放置用户代码以初始化页面 Word.ApplicationClass word = new Word.ApplicationClass(); if (word == null) { ServiceAppSetting.LoggerHander.Invoke("word is null", "Error"); return(""); } Type wordType = word.GetType(); Word.Documents docs = word.Documents; if (docs == null) { ServiceAppSetting.LoggerHander.Invoke("docs is null", "Error"); return(""); } //打开文件 Type docsType = docs.GetType(); Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { wordFileName, true, true }); if (doc == null) { ServiceAppSetting.LoggerHander.Invoke("doc is null", "Error"); return(""); } //转换格式,另存为 Type docType = doc.GetType(); string wordSaveFileName = wordFileName.ToString(); string strSaveFileName = htmlFileName; saveFileName = (object)strSaveFileName; docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML }); docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null); //退出 Word wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); } catch (Exception ex) { ServiceAppSetting.LoggerHander.Invoke(string.Format("<script>alert('{0}!');</script>", ex.Message), "Error"); } return(saveFileName.ToString()); }
/// <summary>生成PDF文件</summary> public override bool Execute(string sourceFile, string destFile) { bool success = true; Microsoft.Office.Interop.Word.ApplicationClass application = null; Microsoft.Office.Interop.Word.Documents documents = null; Microsoft.Office.Interop.Word.Document document = null; try { application = new Microsoft.Office.Interop.Word.ApplicationClass(); //Type wordType = application.GetType(); documents = application.Documents; // 打开文件 Type docsType = documents.GetType(); document = (Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, documents, new Object[] { sourceFile, true, true }); Type docType = document.GetType(); docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, document, new object[] { destFile, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML }); } catch (Exception) { success = false; } finally { if (document != null) { document.Close(); Marshal.ReleaseComObject(document); } if (application != null) { application.Quit(); Marshal.ReleaseComObject(application); } //关闭文档 //docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, document, new object[] { null, null, null }); //退出 Word //wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, application, null); } return(success); }
/// <summary> /// word转成html /// </summary> /// <param name="path">要转换的文档的路径</param> /// <param name="savePath">转换成的html的保存路径</param> /// <param name="wordFileName">转换后html文件的名字</param> //private static void WordToHtml(string path, string savePath, string wordFileName) //{ // Word.ApplicationClass word = new Word.ApplicationClass(); // Type wordwordType = word.GetType(); // Word.Documents docs = word.Documents; // Type docsdocsType = docs.GetType(); // Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { (object)path, true, true }); // Type docdocType = doc.GetType(); // string strSaveFileName = savePath + wordFileName + ".html"; // object saveFileName = (object)strSaveFileName; // docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML }); // docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null); // wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); //} private static void WordToHtml(string path) { Word.Application word = new Word.Application(); Type wordType = word.GetType(); Word.Documents docs = word.Documents; Type docsType = docs.GetType(); Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { (object)path, true, true }); Type docdocType = doc.GetType(); string strSaveFileName = path.Substring(0, path.Length - 3) + ".html"; object saveFileName = (object)strSaveFileName; docsType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML }); docsType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null); wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); }
/// <summary> /// Word转成Html /// </summary> /// <param name="path">要转换的文档的路径</param> /// <param name="savePath">转换成html的保存路径</param> /// <param name="wordFileName">转换成html的文件名字</param> public static void Word2Html(string path, string savePath, string wordFileName) { Word.ApplicationClass word = new Word.ApplicationClass(); Type wordType = word.GetType(); Word.Documents docs = word.Documents; Type docsType = docs.GetType(); Word.Document doc = (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, Word.WdSaveFormat.wdFormatFilteredHTML }); docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null); wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); }
public static string WordToHtml(object wordfilename) { //在此处放置用户代码以初始化页面 word.Application word = new word.Application(); Type wordtype = word.GetType(); word.Documents docs = word.Documents; //打开文件 Type docstype = docs.GetType(); word.Document doc = (word.Document)docstype.InvokeMember("open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new object[] { wordfilename, true, true }); //转换格式,另存为 Type doctype = doc.GetType(); string wordsavefilename = wordfilename.ToString(); string strsavefilename = wordsavefilename.Substring(0, wordsavefilename.LastIndexOf('.')) + ".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); // 退出 word wordtype.InvokeMember("quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); return(savefilename.ToString()); }
public void PrintWord(string sourcePath, string targetPath) { Word.ApplicationClass word = new Word.ApplicationClass(); Type wordType = word.GetType(); //打开WORD文档 Word.Documents docs = word.Documents; Type docsType = docs.GetType(); object objDocName = sourcePath; Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { objDocName, true, true }); object printFileName = targetPath; //打印输出到指定文件 //可以使用 doc.PrintOut();方法,次方法调用中的参数设置较繁琐,建议使用 Type.InvokeMember 来调用时可以不用将PrintOut的参数设置全,只设置4个主要参数 Type docType = doc.GetType(); docType.InvokeMember("PrintOut", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { false, false, Word.WdPrintOutRange.wdPrintAllDocument, printFileName }); //退出WORD wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); }
/// <summary> /// word转成html /// </summary> /// <param name="wordFileName"></param> private string WordToHtml(object wordFileName) { //在此处放置用户代码以初始化页面 Word.Application word = new Word.Application(); Type wordType = word.GetType(); Word.Documents docs = word.Documents; //打开文件 Type docsType = docs.GetType(); Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { wordFileName, true, true }); //转换格式,另存为 Type docType = doc.GetType(); string wordSaveFileName = wordFileName.ToString(); string sExt = wordSaveFileName.Substring(wordSaveFileName.LastIndexOf('.')); string strSaveFileName = wordSaveFileName.Substring(0, wordSaveFileName.Length - sExt.Length) + ".html"; object saveFileName = (object)strSaveFileName; docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML }); docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null); //退出 Word wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); return(saveFileName.ToString()); }
/// <summary> /// print Word /// </summary> /// <param name="wordfile">Fullpath and file name</param> /// <param name="printer">Printer name</param> public static void Print(string wordfile, string printer) { oWord.ApplicationClass word = new oWord.ApplicationClass(); Type wordType = word.GetType(); //Open WORD oWord.Documents docs = word.Documents; Type docsType = docs.GetType(); object objDocName = wordfile; oWord.Document doc = (oWord.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { objDocName, true, true }); doc.Application.ActivePrinter = printer; //Print to File //used doc.PrintOut() and Type.InvokeMember Type docType = doc.GetType(); object printFileName = wordfile + ".xps"; docType.InvokeMember("PrintOut", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { false, false, oWord.WdPrintOutRange.wdPrintAllDocument, printFileName }); //Exit WORD wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); }
public T CreateTBReport_DelegateFunction(BackgroundWorker bw) { if (cn.State != ConnectionState.Open) { cn.Open(); } SqlCommand cmd = new SqlCommand(); cmd.Connection = cn; Word.Application app = null; Word.Document doc = null; if (StaticClass.LaunchWord(dirToLoad, out doc, out app)) { if (app as T == null) { app.Visible = true; ((Word._Application)app).Quit(); bw.ReportProgress(100); return(default(T)); } bw.ReportProgress(15); cmd.CommandText = "SELECT NAME FROM CompetitionData(NOLOCK)"; WordReportCreationBar.ReplaceLabel(doc, app, "COMP_NAME", cmd.ExecuteScalar() as string, true); bw.ReportProgress(20); cmd.CommandText = "SELECT name FROM teams(NOLOCK) WHERE iid = " + currentIid.ToString(); string sTeam = cmd.ExecuteScalar() as string; if (sTeam == null) { sTeam = String.Empty; } WordReportCreationBar.ReplaceLabel(doc, app, "TEAM_ST", sTeam, true); bw.ReportProgress(25); cmd.CommandText = "SELECT iid FROM judgeView(NOLOCK) WHERE pos LIKE '%Зам%безоп%'"; object oTmp = cmd.ExecuteScalar(); string sTmp; if (oTmp == null || oTmp == DBNull.Value) { sTmp = String.Empty; } else { sTmp = StaticClass.GetJudgeData(Convert.ToInt32(oTmp), cn, false); } if (sTmp == String.Empty) { sTmp = " /______________________/"; } else { sTmp = " / " + sTmp + " /"; } WordReportCreationBar.ReplaceLabel(doc, app, "JUDGE", sTmp, true); bw.ReportProgress(30); WordReportCreationBar.ReplaceLabel(doc, app, "DATE", dateToSet, true); bw.ReportProgress(33); cmd.CommandText = " SELECT surname, name, age, qf " + " FROM Participants(NOLOCK) " + " WHERE team_id = " + currentIid.ToString() + " ORDER BY surname, name, age, qf "; SqlDataReader rdr = cmd.ExecuteReader(); int curProgress = 33; int progrStep = 2; try { int curNumber = 0; int row = doc.Tables[1].Rows.Count; while (rdr.Read()) { curNumber++; doc.Tables[1].Rows.Add(); row++; doc.Tables[1].Rows[row].Cells[1].Range.Text = curNumber.ToString(); doc.Tables[1].Rows[row].Cells[2].Range.Text = rdr["surname"].ToString() + " " + rdr["name"].ToString(); doc.Tables[1].Rows[row].Cells[3].Range.Text = rdr["age"].ToString(); doc.Tables[1].Rows[row].Cells[4].Range.Text = rdr["qf"].ToString(); doc.Tables[1].Rows[row].Cells[5].Range.Text = sTeam; if (curProgress < 90) { curProgress += progrStep; bw.ReportProgress(curProgress); } } } finally { rdr.Close(); } if (!String.IsNullOrEmpty(dirToSave)) { string fileName = Path.Combine(dirToSave, currentIid.ToString(idTemplate) + "_" + PrepareTeamName(sTeam) + ".doc"); if (File.Exists(fileName)) { File.Delete(fileName); } object format = Word.WdSaveFormat.wdFormatDocument97; object fName = fileName; Type t = doc.GetType(); MethodInfo saveMethod = t.GetMethod("SaveAs"); try { var parameters = saveMethod.GetParameters(); object[] ps = new object[parameters.Length]; for (int i = 0; i < ps.Length; i++) { ps[i] = Type.Missing; } if (ps.Length > 1) { ps[0] = fName; ps[1] = format; } try { saveMethod.Invoke(doc, ps); } catch (Exception exOriginal) { try { doc.SaveAs2(ref fName, ref format); } catch (Exception newException) { throw new AggregateException(exOriginal, newException); } } ((Word._Application)app).Quit(); } catch (Exception ex) { MessageBox.Show("Ошибка сохранения документа:\r\n\r\n" + ex.ToString()); app.Visible = true; } } } bw.ReportProgress(100); return(app as T); }
/// <summary> /// Word转HTMl /// </summary> /// <param name="path">word文件路径 带盘符</param> /// <returns></returns> public static string WordToHtml(string wordPath) { Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); Type wordType = word.GetType(); Microsoft.Office.Interop.Word.Documents docs = word.Documents; Object oMissing = System.Reflection.Missing.Value; // 打开文件 Type docsType = docs.GetType(); //应当先把文件上传至服务器然后再解析文件为html string filePath = wordPath; Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { filePath, true, true }); // 转换格式,另存为html Type docType = doc.GetType(); //被转换的html文档保存的位置 string saveFileName = ""; string ext = EKFileUpload.getExtend(wordPath).ToLower(); if (ext == "doc") { saveFileName = wordPath.Replace(".doc", ""); } else if (ext == "docx") { saveFileName = wordPath.Replace(".docx", ""); } else { } //另存为html页面 docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML }); // 退出 Word wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); //doc.Close(ref oMissing, ref oMissing, ref oMissing); try { docs.Close(ref oMissing, ref oMissing, ref oMissing); word.Quit(ref oMissing, ref oMissing, ref oMissing); } catch (Exception ex) { new MS_LogBLL().AddLogAdmin(MS_LogBLL.LogLevel.ERROR, "word转换失败" + ex.Message); } GC.Collect(); //读取html 页面 string html = ""; //特别处理.有"."号的的文件名.直接读. 不用加.htm if (saveFileName.Contains(".")) { html = EKFile.ReadFile(saveFileName); } else { html = EKFile.ReadFile(saveFileName + ".htm"); } //补全图片地址 html = EKHtml.ImageWebRoot(html, "http://" + System.Web.HttpContext.Current.Request.Url.Authority + "/files/temp/", "<img[\\s\\S]+?src=\"(?<url>.+?)\">"); //保存页面图片 html = EKHtml.SaveImage(html, DateTime.Now, "<img[\\s\\S]+?src=\"(?<url>.+?)\">"); //删除临时文件.也可保留 if (saveFileName.Contains(".")) { EKFile.DeleteFile(saveFileName); } else { EKFile.DeleteFile(saveFileName + ".htm"); } //删除目录 if (EKFile.ExistsDirectory(saveFileName + ".files")) { EKFile.DeleteDirectoryAnd(saveFileName + ".files"); EKFile.DeleteDirectory(saveFileName + ".files"); } EKFile.DeleteFile(wordPath); return(html); }
//上传文件并转换为html wordToHtml(wordFilePath) ///<summary> ///上传文件并转存为html ///</summary> ///<param name="wordFilePath">word文档在客户机的位置</param> ///<returns>上传的html文件的地址</returns> public string wordToHtml(System.Web.UI.HtmlControls.HtmlInputFile wordFilePath) { MSWord.ApplicationClass word = new MSWord.ApplicationClass(); Type wordType = word.GetType(); MSWord.Documents docs = word.Documents; // 打开文件 Type docsType = docs.GetType(); //应当先把文件上传至服务器然后再解析文件为html string filePath = uploadWord(wordFilePath); //判断是否上传文件成功 if (filePath == "0") { return("0"); } //判断是否为word文件 if (filePath == "1") { return("1"); } object fileName = filePath; MSWord.Document doc = (MSWord.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { fileName, true, true }); // 转换格式,另存为html Type docType = doc.GetType(); string filename = System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() + System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString(); // 判断指定目录下是否存在文件夹,如果不存在,则创建 if (!Directory.Exists(Server.MapPath("~\\html"))) { // 创建up文件夹 Directory.CreateDirectory(Server.MapPath("~\\html")); } //被转换的html文档保存的位置 string ConfigPath = HttpContext.Current.Server.MapPath("html/" + filename + ".html"); object saveFileName = ConfigPath; /*下面是Microsoft Word 9 Object Library的写法,如果是10,可能写成: * docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, * null, doc, new object[]{saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML}); * 其它格式: * wdFormatHTML * wdFormatDocument * wdFormatDOSText * wdFormatDOSTextLineBreaks * wdFormatEncodedText * wdFormatRTF * wdFormatTemplate * wdFormatText * wdFormatTextLineBreaks * wdFormatUnicodeText */ docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, MSWord.WdSaveFormat.wdFormatFilteredHTML }); //关闭文档 docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { null, null, null }); // 退出 Word wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); //转到新生成的页面 return("/" + filename + ".html"); }
public string GetPathByDocToHTML(string strFile) { if (!File.Exists(strFile)) { return("文件不存在"); } ApplicationClass word = new ApplicationClass(); Type wordType = word.GetType(); Microsoft.Office.Interop.Word.Documents docs = word.Documents; // 打开文件 Type docsType = docs.GetType(); object fileName = strFile; Microsoft.Office.Interop.Word.Document doc = (Microsoft.Office.Interop.Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { fileName, true, true }); // 转换格式,另存为html Type docType = doc.GetType(); //给文件重新起名 string filename = System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() + System.DateTime.Now.Hour.ToString() + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString(); string strFileFolder = "/html/"; DateTime dt = DateTime.Now; //以yyyymmdd形式生成子文件夹名 string strFileSubFolder = dt.Year.ToString(); strFileSubFolder += (dt.Month < 10) ? ("0" + dt.Month.ToString()) : dt.Month.ToString(); strFileSubFolder += (dt.Day < 10) ? ("0" + dt.Day.ToString()) : dt.Day.ToString(); string strFilePath = strFileFolder + strFileSubFolder + "/"; // 判断指定目录下是否存在文件夹,如果不存在,则创建 if (!Directory.Exists(System.Web.HttpContext.Current.Server.MapPath(strFilePath))) { // 创建up文件夹 Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(strFilePath)); } //被转换的html文档保存的位置 // HttpContext.Current.Server.MapPath("html" + strFileSubFolder + filename + ".html") string ConfigPath = System.Web.HttpContext.Current.Server.MapPath(strFilePath + filename + ".html"); object saveFileName = ConfigPath; /*下面是Microsoft Word 9 Object Library的写法,如果是10,可能写成: * docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, * null, doc, new object[]{saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML}); * 其它格式: * wdFormatHTML * wdFormatDocument * wdFormatDOSText * wdFormatDOSTextLineBreaks * wdFormatEncodedText * wdFormatRTF * wdFormatTemplate * wdFormatText * wdFormatTextLineBreaks * wdFormatUnicodeText */ //docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, //null, doc, new object[] { saveFileName, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML }); 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, new object[] { null, null, null }); // 退出 Word wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); //转化HTML页面统一编码格式 TransHTMLEncoding(ConfigPath); //拷贝文件到研究院官网目录下 CopyDir(System.Web.HttpContext.Current.Server.MapPath("/html/"), YjyWebPath + "html"); return(strFilePath + filename + ".html"); }
///<summary> /// 把Word文件转换成为PDF格式文件 ///</summary> private void DOCConvertToPDF() { Word.ApplicationClass application = new Word.ApplicationClass(); Word.Documents docs = application.Documents; Type wordtype = application.GetType(); Type docstype = docs.GetType(); try { Word.Document document = (Word.Document)docstype.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new object[] { sourcePath, true, true }); Type doctype = document.GetType(); doctype.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, document, new object[] { targetPath, Word.WdSaveFormat.wdFormatPDF }); } catch (Exception e) { throw e; } finally { wordtype.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, application, null); } /* * bool result = false; * Word.WdExportFormat exportFormat = Word.WdExportFormat.wdExportFormatPDF; * object paramMissing = Type.Missing; * Word.ApplicationClass wordApplication = new Word.ApplicationClass(); * Word.Document wordDocument = null; * try * { * object paramSourceDocPath = sourcePath; * string paramExportFilePath = targetPath; * * Word.WdExportFormat paramExportFormat = exportFormat; * bool paramOpenAfterExport = false; * Word.WdExportOptimizeFor paramExportOptimizeFor = Word.WdExportOptimizeFor.wdExportOptimizeForPrint; * Word.WdExportRange paramExportRange = Word.WdExportRange.wdExportAllDocument; * int paramStartPage = 0; * int paramEndPage = 0; * Word.WdExportItem paramExportItem = Word.WdExportItem.wdExportDocumentContent; * bool paramIncludeDocProps = true; * bool paramKeepIRM = true; * Word.WdExportCreateBookmarks paramCreateBookmarks = Word.WdExportCreateBookmarks.wdExportCreateWordBookmarks; * bool paramDocStructureTags = true; * bool paramBitmapMissingFonts = true; * bool paramUseISO19005_1 = false; * * wordDocument = wordApplication.Documents.Open( * ref paramSourceDocPath, ref paramMissing, ref paramMissing, * ref paramMissing, ref paramMissing, ref paramMissing, * ref paramMissing, ref paramMissing, ref paramMissing, * ref paramMissing, ref paramMissing, ref paramMissing, * ref paramMissing, ref paramMissing, ref paramMissing, * ref paramMissing); * * if (wordDocument != null) * wordDocument.ExportAsFixedFormat(paramExportFilePath, * paramExportFormat, paramOpenAfterExport, * paramExportOptimizeFor, paramExportRange, paramStartPage, * paramEndPage, paramExportItem, paramIncludeDocProps, * paramKeepIRM, paramCreateBookmarks, paramDocStructureTags, * paramBitmapMissingFonts, paramUseISO19005_1, * ref paramMissing); * result = true; * } * catch * { * result = false; * } * finally * { * if (wordDocument != null) * { * wordDocument.Close(ref paramMissing, ref paramMissing, ref paramMissing); * wordDocument = null; * } * if (wordApplication != null) * { * wordApplication.Quit(ref paramMissing, ref paramMissing, ref paramMissing); * wordApplication = null; * } * GC.Collect(); * GC.WaitForPendingFinalizers(); * GC.Collect(); * GC.WaitForPendingFinalizers(); * } * return result;*/ }