Browse Source

修改 word模板导入helper

leiy 1 year ago
parent
commit
1b76548328

+ 2 - 2
OASystem/OASystem.Api/Controllers/TencentOCRController.cs

@@ -136,10 +136,10 @@ namespace OASystem.API.Controllers
             dic.Add("Authority", iDCardOCRView.Authority);
             dic.Add("ValidDate", iDCardOCRView.ValidDate);
 
-            string downPath = string.Format("C:\\Server\\File\\OA2023\\Office\\Word\\TencentOCR\\Save\\{0}.doc",
-                dic["Name"].ToString() + "身份证(人像面)" + DateTime.Now.ToString("yyyyMMddHHmmss"));
+            string downPath = string.Format("{0}.doc",dic["Name"].ToString() + "身份证(人像面)" + DateTime.Now.ToString("yyyyMMddHHmmss"));
 
             string serverPathh = AsposeHelper.ExpertWordToModel(tempPath, downPath, dic, null);
+
             iDCardOCRView.DownUrl = serverPathh.Replace("C:", "http:\\132.232.92.186");
             #endregion
 

+ 58 - 4
OASystem/OASystem.Api/OAMethodLib/File/AsposeHelper.cs

@@ -11,17 +11,17 @@ namespace OASystem.API.OAMethodLib.File
     public class AsposeHelper
     {
 
-        #region downWordToModel
+        #region DownWordToModel
 
         /// <summary>
         /// 根据Word模板进行数据的导出Word操作
         /// </summary>
         /// <param name="tempPath">模板路径</param>
-        /// <param name="outputPath">保存路径</param>
+        /// <param name="outputFileName">保存文件名称</param>
         /// <param name="dic">数据源 key 对应 value</param>
         /// <param name="listDt">需要循环的数据DataTable  多个注意DataTableName </param>
         /// <returns>返回的文档路径</returns>
-        public static string ExpertWordToModel(string tempPath, string outputPath, Dictionary<string,object> dic, List<DataTable>? listDt)
+        public static string ExpertWordToModel(string tempPath, string outputFileName, Dictionary<string,object> dic, List<DataTable>? listDt)
         {
             try
             {
@@ -54,6 +54,8 @@ namespace OASystem.API.OAMethodLib.File
                 //合并模版,相当于页面的渲染
                 doc.MailMerge.Execute(new[] { "PageCount" }, new object[] { doc.PageCount });
                 //保存合并后的文档
+
+                string outputPath = string.Format("C:\\Server\\File\\OA2023\\Office\\Word\\TencentOCR\\Save\\{0}", outputFileName);
                 doc.Save(outputPath); 
                 return outputPath; //返回下载地址
             }
@@ -72,6 +74,58 @@ namespace OASystem.API.OAMethodLib.File
         }
         #endregion
 
-       
+        #region DownExcelToModel
+        /// <summary>
+        /// 根据Word模板进行数据的导出Word操作
+        /// </summary>
+        /// <param name="tempPath">模板路径</param>
+        /// <param name="outputPath">保存路径</param>
+        /// <param name="dic">数据源 key 对应 value</param>
+        /// <param name="listDt">需要循环的数据DataTable  多个注意DataTableName </param>
+        /// <returns>返回的文档路径</returns>
+        public static string ExpertExcelToModel(string tempPath, string outputFileName, Dictionary<string, object> dic, List<DataTable>? listDt)
+        {
+            try
+            {
+                removeWatermark();//加载监听,用于去除水印
+
+                List<string> fieldNames = new List<string>();  //字段名字符串数组
+                List<object> fieldValues = new List<object>(); //字段值数组
+
+                foreach (string key in dic.Keys)
+                {
+                    fieldNames.Add(key);
+                    fieldValues.Add(dic[key]);
+                }
+
+                //载入模板
+                Document doc = new Document(tempPath);
+                doc.MailMerge.Execute(fieldNames.ToArray(), fieldValues.ToArray());
+                //将我们获得的DataTable类型的数据:EduDataTable放入doc方法中做处理
+                if (listDt != null && listDt.Count > 0)
+                {
+                    foreach (DataTable dt in listDt)
+                    {
+                        if (dt != null && dt.Rows.Count > 0)
+                        {
+                            doc.MailMerge.ExecuteWithRegions(dt);
+                        }
+                    }
+                }
+
+                //合并模版,相当于页面的渲染
+                doc.MailMerge.Execute(new[] { "PageCount" }, new object[] { doc.PageCount });
+                //保存合并后的文档
+                doc.Save(outputPath);
+                return outputPath; //返回下载地址
+            }
+            catch (Exception er)
+            {
+                return er.Message;
+            }
+        }
+
+        #endregion
+
     }
 }