using System.Globalization; using Xceed.Document.NET; using Xceed.Words.NET; namespace IRaCIS.Core.Application.Helper; /// /// 利用DocX 库 处理word国际化模板 /// public static class WordTempleteHelper { public static void DocX_GetInternationalTempleteStream(string filePath, Stream memoryStream) { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; using (DocX document = DocX.Load(filePath)) { // 查找书签 var bookmarkEn_Start = document.Bookmarks.FirstOrDefault(b => b.Name == StaticData.CultureInfo.en_US_bookMark); if (bookmarkEn_Start != null) { // 获取书签的起始位置 //int bookmarkCNStartPos = bookmarkCn_Start.Paragraph.StartIndex; var bookmarkENStartPos = bookmarkEn_Start.Paragraph.StartIndex; // 创建一个要删除段落的列表 List paragraphsToRemove = new List(); foreach (var item in document.Paragraphs) { //中文模板在前,英文在后,英文模板,就删除英文之前的,中文模板就删除英文之后的 if (isEn_US ? item.EndIndex < bookmarkENStartPos : item.StartIndex >= bookmarkENStartPos) { paragraphsToRemove.Add(item); } } foreach (var paragraph in paragraphsToRemove) { document.RemoveParagraph(paragraph); } } // 保存修改 document.SaveAs(memoryStream); } } //public static void Npoi_GetInternationalTempleteStream(string filePath, Stream memoryStream) //{ // var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; // using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) // { // XWPFDocument doc = new XWPFDocument(fs); // // 查找包含指定书签的段落及其索引 // var bookmarkParagraph = doc.Paragraphs // .FirstOrDefault(p => p.GetCTP().GetBookmarkStartList().Any(b => b.name == StaticData.CultureInfo.en_US_bookMark)); // if (bookmarkParagraph != null) // { // int bookmarkIndex = doc.Paragraphs.IndexOf(bookmarkParagraph); // if (isEn_US) // { // // 从书签所在段落开始,删除之前的所有段落 // for (int i = bookmarkIndex - 1; i >= 0; i--) // { // doc.RemoveBodyElement(i); // } // } // else // { // // 删除书签之后的所有段落 // for (int i = doc.Paragraphs.Count - 1; i >= bookmarkIndex; i--) // { // doc.RemoveBodyElement(i); // } // } // } // doc.Write(memoryStream); // } //} }