using Aspose.Words; using Microsoft.Office.Interop.Excel; using System; using System.Data; using System.Diagnostics; using System.IO; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using Aspose.Words.Drawing; using Shape = Aspose.Words.Drawing.Shape; namespace BLL { /// /// word文档操作辅助类 /// public class AsposeWordHelper { /// /// Word /// private Document wordDoc; /// /// 基于模版新建Word文件 /// /// 模板路径 public void OpenTempelte(string path) { wordDoc = new Document(path); } public Document Document { get { return wordDoc; } } /// /// 添加图片 /// /// 文件路径+文件名 /// 文本域名 /// 宽 /// 高 public void AddImage(string filename, string field, double width, double height, double left, double top) { DocumentBuilder builder = new DocumentBuilder(wordDoc); Shape shape = new Shape(wordDoc, ShapeType.Image); if (!string.IsNullOrEmpty(filename)) { shape.ImageData.SetImage(filename); shape.Width = width;//设置宽和高 shape.Height = height; shape.Left = left; shape.Top = top; shape.WrapType = WrapType.None; shape.BehindText = true; builder.MoveToMergeField(field); builder.InsertNode(shape); } else { //没有图片用空替换占位域值 builder.MoveToMergeField(field); builder.Write(""); } } /// /// 书签赋值用法 /// /// 书签名 /// 内容 public void WriteBookMark(string LabelId, string Content) { if (wordDoc.Range.Bookmarks[LabelId] != null) { wordDoc.Range.Bookmarks[LabelId].Text = Content; } } /// /// 列表赋值用法 /// /// public void WriteTable(System.Data.DataTable dt) { wordDoc.MailMerge.ExecuteWithRegions(dt); } /// /// 文本域赋值用法 /// /// key /// value public void Executefield(string[] fieldNames, object[] fieldValues) { wordDoc.MailMerge.Execute(fieldNames, fieldValues); } /// /// Pdf文件保存 /// /// 文件路径+文件名 public void SavePdf(string filename) { wordDoc.Save(filename, SaveFormat.Pdf); } /// /// Doc文件保存 /// /// 文件路径+文件名 public void SaveDoc(string filename) { wordDoc.Save(filename, SaveFormat.Doc); } /// /// 不可编辑受保护,需输入密码 /// /// 密码 public void NoEdit(string pwd) { wordDoc.Protect(ProtectionType.ReadOnly, pwd); } /// /// 只读 /// public void ReadOnly() { wordDoc.Protect(ProtectionType.ReadOnly); } /// /// 通过流导出word文件 /// /// 流 /// 文件名 //public static HttpResponseMessage ExportWord(Stream stream, string fileName) //{ // var file = stream; // fileName += DateTime.Now.ToString("yyyyMMddHHmmss"); // HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); // result.Content = new StreamContent(file); // result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/msword"); // result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); // result.Content.Headers.ContentDisposition.FileName = fileName + ".doc"; // return result; //} /// /// 通过流导出pdf文件 /// /// 流 /// 文件名 //public static HttpResponseMessage ExportPdf(Stream stream, string fileName) //{ // var file = stream; // fileName += DateTime.Now.ToString("yyyyMMddHHmmss"); // HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); // result.Content = new StreamContent(file); // result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf"); // result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); // result.Content.Headers.ContentDisposition.FileName = fileName + ".pdf"; // return result; //} public static void InsertImg(Document doc, string rootPath, string BookmarksName, string ManId, string Idea) { Bookmark bookmarkCreateMan = doc.Range.Bookmarks[BookmarksName]; if (bookmarkCreateMan != null) { var user = UserService.GetUserByUserId(ManId); if (user != null) { if (!string.IsNullOrEmpty(user.SignatureUrl)) { var file = user.SignatureUrl; if (!string.IsNullOrWhiteSpace(file)) { string url = rootPath + file; DocumentBuilder builders = new DocumentBuilder(doc); builders.MoveToBookmark(BookmarksName); if (!string.IsNullOrEmpty(url)) { System.Drawing.Size JpgSize; float Wpx; float Hpx; UploadAttachmentService.getJpgSize(url, out JpgSize, out Wpx, out Hpx); double i = 1; i = JpgSize.Width / 50.0; if (File.Exists(url)) { bookmarkCreateMan.Text = Idea; builders.InsertImage(url, JpgSize.Width *1.6/ i, JpgSize.Height * 1.2 / i); } else { bookmarkCreateMan.Text = Idea; bookmarkCreateMan.Text = user.UserName; } } } } else { bookmarkCreateMan.Text = user.UserName; } } } } public static void InsertImg(Document doc, string rootPath, string BookmarksName, string ManId, string Idea,bool IdeaIsCover) { Bookmark bookmarkCreateMan = doc.Range.Bookmarks[BookmarksName]; if (bookmarkCreateMan != null) { var user = UserService.GetUserByUserId(ManId); if (user != null) { if (!string.IsNullOrEmpty(user.SignatureUrl)) { var file = user.SignatureUrl; if (!string.IsNullOrWhiteSpace(file)) { string url = rootPath + file; DocumentBuilder builders = new DocumentBuilder(doc); builders.MoveToBookmark(BookmarksName); if (!string.IsNullOrEmpty(url)) { System.Drawing.Size JpgSize; float Wpx; float Hpx; UploadAttachmentService.getJpgSize(url, out JpgSize, out Wpx, out Hpx); double i = 1; i = JpgSize.Width / 50.0; if (File.Exists(url)) { if (IdeaIsCover) { bookmarkCreateMan.Text += Idea; } else { bookmarkCreateMan.Text = Idea; } builders.InsertImage(url, JpgSize.Width *1.6/ i, JpgSize.Height * 1.2 / i); } else { if (IdeaIsCover) { bookmarkCreateMan.Text += Idea; } else { bookmarkCreateMan.Text = Idea; } bookmarkCreateMan.Text = user.UserName; } } } } else { bookmarkCreateMan.Text = user.UserName; } } } } public static void WordIntoPdf(string wordPath, string pdfPath) { Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document document = null; try { application.Visible = false; document = application.Documents.Open(wordPath); document.ExportAsFixedFormat(pdfPath, Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF); } catch (Exception e) { Console.WriteLine(e.Message); } finally { document.Close(); } } /// /// html代码转word /// /// html代码 /// 保存路径 public void HtmlIntoWord(string Html,string path) { StringBuilder sb = new StringBuilder(); sb.Append( ""); sb.Append(Html); sb.Append(""); var html = sb.ToString();//读取html内容 StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("utf-8")); sw.WriteLine(html); sw.Flush(); sw.Close(); } //public static string WordToHtml(object wordFileName) //{ // //在此处放置用户代码以初始化页面 // Microsoft.Office.Interop.Word.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass(); // word.Visible = false;//使文档可见(程序运行时,word文档不会闪屏) // 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 }); // Microsoft.Office.Interop.Word.Document doc = word.Documents.Open(wordFileName); // //转换格式,另存为 // 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(); //} #region 预览Excel /// /// 预览Excel /// public static string PriviewExcel( string inFilePath) { Microsoft.Office.Interop.Excel.Application excel = null; Microsoft.Office.Interop.Excel.Workbook xls = null; excel = new Microsoft.Office.Interop.Excel.Application(); object missing = Type.Missing; object trueObject = true; excel.Visible = false; excel.DisplayAlerts = false; string randomName = DateTime.Now.Ticks.ToString(); //output fileName xls = excel.Workbooks.Open(inFilePath, missing, trueObject, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); //Save Excel to Html object format = Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml; string htmlName = Path.GetFileNameWithoutExtension(inFilePath) + ".html"; String outputFile = Path.GetDirectoryName(inFilePath) + "\\" + htmlName; Workbook wsCurrent = xls;//(Workbook)wsEnumerator.Current; wsCurrent.SaveAs(outputFile, format, missing, missing, missing, missing, XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing); excel.Quit(); return outputFile; //Open generated Html //Process process = new Process(); //process.StartInfo.UseShellExecute = true; //process.StartInfo.FileName = outputFile; //process.Start(); } #endregion //public static string GetPathByDocToHTML(string strFile) //{ // if (string.IsNullOrEmpty(strFile)) // { // return "0";//没有文件 // } // Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application() // { // Visible = false, // AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable // }; // //Microsoft.Office.Interop.Word.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass(); // // word.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone; // 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(strFilePath)) // { // // 创建up文件夹 // Directory.CreateDirectory(strFilePath); // } // //被转换的html文档保存的位置 // // HttpContext.Current.Server.MapPath("html" + strFileSubFolder + filename + ".html") // string ConfigPath = 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); // //转到新生成的页面 // //return ("/" + filename + ".html"); // //转化HTML页面统一编码格式 // TransHTMLEncoding(ConfigPath); // return (strFilePath + filename + ".html"); //} public static void TransHTMLEncoding(string strFilePath) { try { System.IO.StreamReader sr = new System.IO.StreamReader(strFilePath, Encoding.GetEncoding(0)); string html = sr.ReadToEnd(); sr.Close(); html = System.Text.RegularExpressions.Regex.Replace(html, @"]*>", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase); System.IO.StreamWriter sw = new System.IO.StreamWriter(strFilePath, false, Encoding.Default); sw.Write(html); sw.Close(); } catch (Exception ex) { } } } }