word文件设置书签,并给书签赋值(.net)
1.新建word文档。
2.word文档创建书签。
①选中数据
②插入-书签
③弹出书签窗口
④书签名根据实际情况命名,后续代码要根据此命名识别。在点击添加即可,则选中的数据会出现中括号。
⑤也可以再次 插入 --》书签,可以查看到自己之前创建的书签,并且选中书签,选择定位可以定位到自己命名的数据。也可以删除,重新定位。
3.word创建完成。
4.文件放到自己程序下,后续根据所放位置进行获取该文件。
5.获取文件路径,给书签赋值
//获取文件
string tempPath = HttpContext.Current.Server.MapPath("~/TemplateFiles/test/Excel常用公式.docx");
string fileSavePathDoc =绝对路径+文件名称.docx
//创建doc
Document doc = new Document(tempPath);
//获取标签
Bookmark Content= doc.Range.Bookmarks["Content"];//内容
//给标签赋值
Content.Text=“内容”;
//保存到临时目录
doc.Save(fileSavePathDoc);
根据实际情况取临时文件保存到相应位置,则同时可删除临时文件。(File.Delete(fileSavePathDoc);)
同理也可获取文件,书签内容赋值给对应字段数据。
/// <summary> /// 工管批复正文docx /// </summary> /// /// <param name="id">设计批复ID</param> /// <param name="replyId"></param> /// <param name="domain"></param> public static IList<UploadFile> CreateEPMSReplyFile(string docID, int replyId, DomainBase<int> domain, string number) { IList<UploadFile> list = new List<UploadFile>(); DesignReply d = null; FinalAcceptanceReply f = null; string title = ""; string tempPath = ""; ProjectTransfer projectTransfer = IoCContainer.Get<IProjectTransferDao>().SelectByNumber(number); ProjectHisDoc projectHisDoc = IoCContainer.Get<IProjectHisDocDao>().SelectByNumber(number); User user = IoCContainer.Get<IUserDao>().SelectById(projectHisDoc.ProvinceManagerId); switch (domain.GetDomainName()) { case "DesignReply": d = (DesignReply)domain; #region 选择设计批复模板 if (projectTransfer.InvestmentType == "上市公司" && user.OaDepartment == "工程建设部" && user.OaGroup == "无线建设室") { tempPath = HttpContext.Current.Server.MapPath("~/TemplateFiles/DesignReplyNew/A模板.docx"); } else if (projectTransfer.InvestmentType == "上市公司" && d.ReplyType == FileType.省公司公司发文) { tempPath = HttpContext.Current.Server.MapPath("~/TemplateFiles/DesignReplyNew/上市A.docx"); } else if (projectTransfer.InvestmentType.Contains("TD") && d.ReplyType == FileType.省公司公司发文) { tempPath = HttpContext.Current.Server.MapPath("~/TemplateFiles/DesignReplyNew/TDA.docx"); } else if (projectTransfer.InvestmentType == "上市公司" && d.ReplyType == FileType.省公司部门发文) { tempPath = HttpContext.Current.Server.MapPath("~/TemplateFiles/DesignReplyNew/上市A.docx"); } else { //其他投资类型暂未定 throw new ValidationException("未查询到对应批复模板,请联系管理员"); } #endregion break; case "FinalAcceptanceReply": f = (FinalAcceptanceReply)domain; #region 选择终验批复模板 if (projectTransfer.InvestmentType == "上市公司") { tempPath = HttpContext.Current.Server.MapPath("~/TemplateFiles/FinalReply/上市A样例.docx"); } else if (projectTransfer.InvestmentType.Contains("TD")) { tempPath = HttpContext.Current.Server.MapPath("~/TemplateFiles/FinalReply/TDA.docx"); } else { //其他投资类型暂未定 } #endregion break; } //生成html和doc Document doc = new Document(tempPath); string saveDir = UploadFileHelper.CreateAbsPath(HttpContext.Current.Server.MapPath("~/"), "TemplateFiles\\Upload\\"); string docId = docID; //string fileSaveNameDoc = docId + ".docx"; string fileSaveNameDoc = "正文内容.docx"; string fileSavePathDoc = saveDir + fileSaveNameDoc; int uploadFileId = 0; switch (domain.GetDomainName()) { #region DesignReply 设计批复 case "DesignReply": title = "设计批复附件"; Project projectD = IoCContainer.Get<IProjectDao>().SelectByNumber(d.ProjectNumber); Bookmark BuildConstructionD = doc.Range.Bookmarks["BuildConstruction"];//建设规模 Bookmark BuildRegionD = doc.Range.Bookmarks["BuildRegion"];//建设单位 Bookmark BuildRegionD1 = doc.Range.Bookmarks["BuildRegion1"];//建设单位 Bookmark BuildRegionD2 = doc.Range.Bookmarks["BuildRegion2"];//建设单位 Bookmark BuildRegionD3 = doc.Range.Bookmarks["BuildRegion3"];//建设单位 Bookmark DesignFeeSumD = doc.Range.Bookmarks["DesignFeeSum"];//设计费汇总 Bookmark DesignSuppliersD = doc.Range.Bookmarks["DesignSuppliers"];//设计单位 Bookmark EngineeringCostD = doc.Range.Bookmarks["EngineeringCost"];//工程造价 Bookmark ManagementModelD = doc.Range.Bookmarks["ManagementModel"];//管理模式 Bookmark ManagerUnitD = doc.Range.Bookmarks["ManagerUnit"];//管理单位 Bookmark ProjectNameD = doc.Range.Bookmarks["ProjectName"];//项目名称 Bookmark ProjectNameD1 = doc.Range.Bookmarks["ProjectName1"];//项目名称 Bookmark ProjectNumberD = doc.Range.Bookmarks["ProjectNumber"];//项目编码 Bookmark ReplyDateD = doc.Range.Bookmarks["ReplyDate"];//批复日期 Bookmark ReplyNumberD = doc.Range.Bookmarks["ReplyNumber"];//批复文号 Bookmark ReplyTitleD = doc.Range.Bookmarks["ReplyTitle"];//批复标题 Bookmark SafeProductionFeeSumD = doc.Range.Bookmarks["SafeProductionFeeSum"];//安全生产费汇总 Bookmark SendCopyUnitD = doc.Range.Bookmarks["SendCopyUnit"];//抄送单位 Bookmark SendUnitD = doc.Range.Bookmarks["SendUnit"];//主送单位 Bookmark SignDateD = doc.Range.Bookmarks["SignDate"];//签发日期 Bookmark SignUserD = doc.Range.Bookmarks["SignUser"];//签发人 Bookmark SupervisionFeeSumD = doc.Range.Bookmarks["SupervisionFeeSum"];//监理费汇总 Bookmark TaxInclusiveFeeSumD = doc.Range.Bookmarks["TaxInclusiveFeeSum"];//含税价 Bookmark TaxRateSumD = doc.Range.Bookmarks["TaxRateSum"];//除税价汇总 Bookmark TimeRequestD = doc.Range.Bookmarks["TimeRequest"];//工期进度 Bookmark ValueAddedTaxSumD = doc.Range.Bookmarks["ValueAddedTaxSum"]; Bookmark ExpressDepartmentD = doc.Range.Bookmarks["ExpressDepartment"]; Bookmark ReserveFeeSumD = doc.Range.Bookmarks["ReserveFeeSum"]; Bookmark OtherFeeSumD = doc.Range.Bookmarks["OtherFeeSum"]; Bookmark InstallConstructionFeeSumD = doc.Range.Bookmarks["InstallConstructionFeeSum"]; Bookmark NeedInstallEquipmentFeeSumD = doc.Range.Bookmarks["NeedInstallEquipmentFeeSum"]; Bookmark InitNumberD = doc.Range.Bookmarks["InitNumber"]; Bookmark InitCostD = doc.Range.Bookmarks["InitCost"]; Bookmark InitNotTaxCostD = doc.Range.Bookmarks["InitNotTaxCost"];//赋值 if (projectTransfer.InvestmentType == "上市公司" && user.OaDepartment == "工程建设部" && user.OaGroup == "无线建设室") { //工程建设部无线建设室批复模板 InitCostD.Text = projectHisDoc.InitCost.ToString(); InitNotTaxCostD.Text = projectHisDoc.InitCostNoTax.ToString(); InitNumberD.Text = projectHisDoc.InitNo; InstallConstructionFeeSumD.Text = d.InstallConstructionFeeSum.ToString(); NeedInstallEquipmentFeeSumD.Text = d.NeedInstallEquipmentFeeSum.ToString(); OtherFeeSumD.Text = d.OtherFeeSum.ToString(); ReserveFeeSumD.Text = d.ReserveFeeSum.ToString(); SafeProductionFeeSumD.Text = d.SafeProductionFeeSum.ToString(); TaxInclusiveFeeSumD.Text = d.TaxInclusiveFeeSum.ToString(); TaxRateSumD.Text = d.TaxRateSum.ToString(); BuildRegionD3.Text = d.Region.GetText(); } else { if (projectTransfer.InvestmentType == "上市公司" && d.ReplyType == FileType.省公司公司发文) { ReserveFeeSumD.Text = (d.ReserveFeeSum / 10000).ToString(); OtherFeeSumD.Text = (d.OtherFeeSum / 10000).ToString(); InstallConstructionFeeSumD.Text = (d.InstallConstructionFeeSum / 10000).ToString(); NeedInstallEquipmentFeeSumD.Text = (d.NeedInstallEquipmentFeeSum / 10000).ToString(); } else { if (projectTransfer.InvestmentType == "上市公司" && d.ReplyType == FileType.省公司部门发文) { if (projectHisDoc.WbsOrgName == WbsOrgName.A) ExpressDepartmentD.Text = "A"; if (projectHisDoc.WbsOrgName == WbsOrgName.B) ExpressDepartmentD.Text = "B"; } if (d.SupervisionFeeSum > 0) SupervisionFeeSumD.Text = (d.SupervisionFeeSum / 10000).ToString(); if (d.DesignFeeSum > 0) DesignFeeSumD.Text = (d.DesignFeeSum / 10000).ToString(); EngineeringCostD.Text = "( )";//工程造价等待用户确认 } if (!string.IsNullOrWhiteSpace(d.ManagementModel)) ManagementModelD.Text = d.ManagementModel; else ManagementModelD.Text = ""; TaxInclusiveFeeSumD.Text = (d.TaxInclusiveFeeSum / 10000).ToString(); TaxRateSumD.Text = (d.TaxRateSum / 10000).ToString(); ValueAddedTaxSumD.Text = (d.ValueAddedTaxSum / 10000).ToString(); if (d.SafeProductionFeeSum > 0) SafeProductionFeeSumD.Text = (d.SafeProductionFeeSum / 10000).ToString(); if (projectHisDoc.WbsOrgName == WbsOrgName.工程建设部) { ManagerUnitD.Text = projectD.ManageRegion.GetText() + "工程建设部"; } else if (projectHisDoc.WbsOrgName == WbsOrgName.全业务支撑中心) { ManagerUnitD.Text = projectD.ManageRegion.GetText() + "全业务支撑中心"; } if(projectHisDoc.BuildRegion==Region.省公司) BuildRegionD.Text = ""; else BuildRegionD.Text = d.Region.GetText() + "、"; } TimeRequestD.Text = d.TimeRequest; BuildConstructionD.Text = d.Content; BuildRegionD1.Text = d.Region.GetText(); BuildRegionD2.Text = d.Region.GetText(); IList<Supplier> supplier = IoCContainer.Get<ISupplierDao>().SelectByIds(d.DesignUnitId.SplitInt(",")); if (supplier.Count > 0) DesignSuppliersD.Text = supplier.Select(s => s.Name).JoinToString(","); ProjectNameD.Text = projectD.Name; ProjectNameD1.Text = projectD.Name; ProjectNumberD.Text = d.ProjectNumber; ReplyTitleD.Text = d.Title; SendCopyUnitD.Text = ""; if (!string.IsNullOrWhiteSpace(d.SendCopyUnit)) { IList<string> listd = new List<string>(); string department = d.SendCopyUnitCollection.GetDepartment().Where(s => s.Property1 == Region.省公司).Select(s => s.Property2).JoinToString("、"); if (!string.IsNullOrEmpty(department)) listd.Add(department); SendCopyUnitD.Text = listd.JoinToString("、"); } if (d.Region == Region.省公司) SendUnitD.Text = "工程建设办公室"; else SendUnitD.Text = d.Region.GetText(); ReplyDateD.Text = "签发生成"; ReplyNumberD.Text = "签发生成"; SignDateD.Text = "签发生成"; SignUserD.Text = "签发生成"; break; #endregion #region FinalAcceptanceReply 终验批复 case "FinalAcceptanceReply": title = "竣工验收批复文件"; Bookmark ReferenceNumber = doc.Range.Bookmarks["ReferenceNumber"];//批复文号 Bookmark SignUserId = doc.Range.Bookmarks["SignUserId"];//签发人员 Bookmark TitleF = doc.Range.Bookmarks["Title"];//标题 Bookmark RegionHeadF = doc.Range.Bookmarks["RegionHead"]; Bookmark ContentTitleF = doc.Range.Bookmarks["ContentTitle"];//正文标题 Bookmark ProjectNumberF = doc.Range.Bookmarks["ProjectNumber"];//项目编码 Bookmark RegionBottomF = doc.Range.Bookmarks["RegionBottom"]; Bookmark SignTimeF = doc.Range.Bookmarks["SignTime"];//签发时间 Bookmark SendCopyUnitCollectionF = doc.Range.Bookmarks["SendCopyUnitCollection"];//抄送单位 Bookmark SignTimeBottomF = doc.Range.Bookmarks["SignTimeBottom"];//签发时间 Bookmark ExpressDepartmenF = doc.Range.Bookmarks["ExpressDepartment"]; ReferenceNumber.Text = "签发生成"; SignUserId.Text = "签发生成"; TitleF.Text = f.Title; if (projectHisDoc.BuildRegion == Region.省公司) RegionHeadF.Text = "工程建设办公室"; else RegionHeadF.Text = f.Region.GetText(); ContentTitleF.Text = projectHisDoc.ProjectName; ProjectNumberF.Text = f.ProjectNumber; RegionBottomF.Text = f.Region.GetText(); ProjectNumberF.Text = f.ProjectNumber; SignTimeF.Text = "签发生成"; SendCopyUnitCollectionF.Text = ""; if (!string.IsNullOrWhiteSpace(f.SendCopyUnit)) { IList<string> listd = new List<string>(); string department = f.SendCopyUnitCollection.GetDepartment().Where(s => s.Property1 == Region.省公司).Select(s => s.Property2).JoinToString("、"); if (!string.IsNullOrEmpty(department)) listd.Add(department); SendCopyUnitCollectionF.Text = listd.JoinToString("、"); } SignTimeBottomF.Text = "签发生成"; if (projectTransfer.InvestmentType == "上市公司") { if (projectHisDoc.WbsOrgName == WbsOrgName.A) ExpressDepartmenF.Text = "A"; if (projectHisDoc.WbsOrgName == WbsOrgName.B) ExpressDepartmenF.Text = "B"; } break; #endregion } //保存到临时目录 doc.Save(fileSavePathDoc); //从临时目录保存到上传文件模块 uploadFileId = UploadFileHelper.UploadLocalFile(fileSavePathDoc, "EPMS-SN", title); UploadFile uploadFileDoc = IoCContainer.Get<IUploadFileDao>().SelectByIdReq(uploadFileId); uploadFileDoc.Guid = Guid.NewGuid().ToString(); uploadFileDoc.RelatedDomain = domain.GetDomainName(); uploadFileDoc.RelatedDomainId = replyId.ToString(); uploadFileDoc.ContentType = "text/plain"; uploadFileDoc.AdditionalData = "正文"; IoCContainer.Get<IUploadFileDao>().Update(uploadFileDoc); list.Add(uploadFileDoc); File.Delete(fileSavePathDoc); return list; }
/// <summary> /// 重置批复正文 /// </summary> public static void ModifyReplyFile(int replyId, DomainBase<int> domain, string number) { DesignReply d = null; FinalAcceptanceReply f = null; UploadFile oaAttachments = null; string docId = string.Empty; //批复正文 switch (domain.GetDomainName()) { case "FinalAcceptanceReply": oaAttachments = IoCContainer.Get<IUploadFileDao>().Select("FinalAcceptanceReply", replyId.ToString()).Where(s => s.AdditionalData == "正文").FirstOrDefault(); docId = "FinalAcceptanceReplyNew_" + replyId; break; case "DesignReply": oaAttachments = IoCContainer.Get<IUploadFileDao>().Select("DesignReply", replyId.ToString()).Where(s => s.AdditionalData == "正文").FirstOrDefault(); docId = "DesignReplyNew_" + replyId; break; } //批复附件 string title = ""; string docPath = UploadFileHelper.GetAbsPath(oaAttachments); //生成html和doc Document doc = new Document(docPath); string saveDir = UploadFileHelper.CreateAbsPath(HttpContext.Current.Server.MapPath("~/"), "TemplateFiles\\Upload\\"); string fileSaveNameDoc = "正文内容.docx"; string fileSavePathDoc = saveDir + fileSaveNameDoc; int uploadFileId = 0; ProjectTransfer projectTransfer = IoCContainer.Get<IProjectTransferDao>().SelectByNumber(number); ProjectHisDoc projectHisDoc = IoCContainer.Get<IProjectHisDocDao>().SelectByNumber(number); switch (domain.GetDomainName()) { #region DesignReply 设计批复 case "DesignReply": d = (DesignReply)domain; title = "设计批复附件"; Project projectD = IoCContainer.Get<IProjectDao>().SelectByNumber(d.ProjectNumber); Bookmark BuildConstructionD = doc.Range.Bookmarks["BuildConstruction"];//建设规模 Bookmark BuildRegionD = doc.Range.Bookmarks["BuildRegion"];// Bookmark BuildRegionD1 = doc.Range.Bookmarks["BuildRegion1"];// Bookmark BuildRegionD2 = doc.Range.Bookmarks["BuildRegion2"];// Bookmark DesignSuppliersD = doc.Range.Bookmarks["DesignSuppliers"];//设计单位 Bookmark ManagementModelD = doc.Range.Bookmarks["ManagementModel"];//管理模式 Bookmark ManagerUnitD = doc.Range.Bookmarks["ManagerUnit"];//管理单位 Bookmark ProjectNameD = doc.Range.Bookmarks["ProjectName"];//项目名称 Bookmark ProjectNameD1 = doc.Range.Bookmarks["ProjectName1"];//项目名称 Bookmark ProjectNumberD = doc.Range.Bookmarks["ProjectNumber"];//项目编码 Bookmark ReplyDateD = doc.Range.Bookmarks["ReplyDate"];//批复日期 Bookmark ReplyNumberD = doc.Range.Bookmarks["ReplyNumber"];//批复文号 Bookmark ReplyTitleD = doc.Range.Bookmarks["ReplyTitle"];//批复标题 Bookmark SendCopyUnitD = doc.Range.Bookmarks["SendCopyUnit"];//抄送单位 Bookmark SendUnitD = doc.Range.Bookmarks["SendUnit"];//主送单位 Bookmark SignDateD = doc.Range.Bookmarks["SignDate"];//签发日期 Bookmark SignUserD = doc.Range.Bookmarks["SignUser"];//签发人 Bookmark TimeRequestD = doc.Range.Bookmarks["TimeRequest"];//工期进度 //赋值 BuildConstructionD.Text = d.Content; BuildRegionD1.Text = d.Region.GetText(); BuildRegionD2.Text = d.Region.GetText(); IList<Supplier> supplier = IoCContainer.Get<ISupplierDao>().SelectByIds(d.DesignUnitId.SplitInt(",")); if (supplier.Count > 0) DesignSuppliersD.Text = supplier.Select(s => s.Name).JoinToString(","); if (!string.IsNullOrWhiteSpace(d.ManagementModel)) ManagementModelD.Text = d.ManagementModel; else ManagementModelD.Text = ""; if (projectD.ManageRegion == Region.省公司 && projectHisDoc.WbsOrgName == WbsOrgName.工程建设部) { ManagerUnitD.Text = projectD.ManageRegion.GetText() + "工程建设部"; BuildRegionD.Text = ""; } else if (projectD.ManageRegion == Region.省公司 && projectHisDoc.WbsOrgName == WbsOrgName.全业务支撑中心) { ManagerUnitD.Text = projectD.ManageRegion.GetText() + "全业务支撑中心"; BuildRegionD.Text = ""; } else { ManagerUnitD.Text = projectD.ManageRegion.GetText(); BuildRegionD.Text = d.Region.GetText() + "、"; } ProjectNameD.Text = projectD.Name; ProjectNameD1.Text = projectD.Name; ProjectNumberD.Text = d.ProjectNumber; ReplyDateD.Text = "签发生成"; ReplyNumberD.Text = "签发生成"; ReplyTitleD.Text = d.Title; //if (d.SafeProductionFeeSum > 0) // SafeProductionFeeSumD.Text = (d.SafeProductionFeeSum / 10000).ToString(); SendCopyUnitD.Text = ""; if (!string.IsNullOrWhiteSpace(d.SendCopyUnit)) { IList<string> listd = new List<string>(); string department = d.SendCopyUnitCollection.GetDepartment().Where(s => s.Property1 == Region.省公司).Select(s => s.Property2).JoinToString("、"); if (!string.IsNullOrEmpty(department)) listd.Add(department); SendCopyUnitD.Text = listd.JoinToString("、"); } if (d.Region == Region.省公司) SendUnitD.Text = "工程建设办公室"; else SendUnitD.Text = d.Region.GetText(); SignDateD.Text = "签发生成"; SignUserD.Text = "签发生成"; TimeRequestD.Text = d.TimeRequest; break; #endregion #region FinalAcceptanceReply 终验批复 case "FinalAcceptanceReply": f= (FinalAcceptanceReply)domain; title = "竣工验收批复文件"; Bookmark ReferenceNumber = doc.Range.Bookmarks["ReferenceNumber"] Bookmark SignUserId = doc.Range.Bookmarks["SignUserId"];//签发人员 Bookmark TitleF = doc.Range.Bookmarks["Title"];//标题 Bookmark RegionHeadF = doc.Range.Bookmarks["RegionHead"]; Bookmark ContentTitleF = doc.Range.Bookmarks["ContentTitle"];//正文标题 Bookmark ProjectNumberF = doc.Range.Bookmarks["ProjectNumber"]; Bookmark RegionBottomF = doc.Range.Bookmarks["RegionBottom"]; Bookmark SignTimeF = doc.Range.Bookmarks["SignTime"];//签发时间 Bookmark SendCopyUnitCollectionF = doc.Range.Bookmarks["SendCopyUnitCollection"];//抄送单位 Bookmark SignTimeBottomF = doc.Range.Bookmarks["SignTimeBottom"];//签发时间 ReferenceNumber.Text = "签发生成"; SignUserId.Text = "签发生成"; TitleF.Text = f.Title; if (projectHisDoc.BuildRegion == Region.省公司) RegionHeadF.Text = "工程建设办公室"; else RegionHeadF.Text = f.Region.GetText(); ContentTitleF.Text = projectHisDoc.ProjectName; ProjectNumberF.Text = f.ProjectNumber; RegionBottomF.Text = f.Region.GetText(); ProjectNumberF.Text = f.ProjectNumber; SignTimeF.Text = "签发生成"; SendCopyUnitCollectionF.Text = ""; if (!string.IsNullOrWhiteSpace(f.SendCopyUnit)) { IList<string> listd = new List<string>(); string department = f.SendCopyUnitCollection.GetDepartment().Where(s => s.Property1 == Region.省公司).Select(s => s.Property2).JoinToString("、"); if (!string.IsNullOrEmpty(department)) listd.Add(department); SendCopyUnitCollectionF.Text = listd.JoinToString("、"); } SignTimeBottomF.Text = "签发生成";break; #endregion } //保存到临时目录 doc.Save(fileSavePathDoc); //删除原有正文 IoCContainer.Get<IUploadFileDao>().DeleteById(oaAttachments.Id); //从临时目录保存到上传文件模块 uploadFileId = UploadFileHelper.UploadLocalFile(fileSavePathDoc, "EPMS-SN", title); UploadFile uploadFileDoc = IoCContainer.Get<IUploadFileDao>().SelectByIdReq(uploadFileId); uploadFileDoc.Guid = Guid.NewGuid().ToString(); uploadFileDoc.RelatedDomain = domain.GetDomainName(); uploadFileDoc.RelatedDomainId = replyId.ToString(); uploadFileDoc.ContentType = "text/plain"; uploadFileDoc.AdditionalData = "正文"; IoCContainer.Get<IUploadFileDao>().Update(uploadFileDoc); File.Delete(fileSavePathDoc); }