• Güncelleme: Merhaba Ziyaretçi, artık profil resminde ve konularında gif kullanabilirsin!

net core replace text in Docx

janjel

Tüccar
Katılım
1 Ekim 2018
Mesajlar
49
Tepkime puanı
28
valla çok işe yarar header kısımlarındaki metinleride değiştiriyor

C#:
    public class replaceModel
    {
        public replaceModel(string find,string replace)
        {
            this.replace = replace;
            this.find = find;
        }
        public string find;
        public string replace;
    }

 public static string replaceAndGetFileName(string baseFileName, string baseFileDir, string copyToDir, List<replaceModel> replaceList)
        {
            string rnd = Siniflar.genelAPI.generateRandomString(35);
            string sourceFile = System.IO.Path.Combine(baseFileDir, baseFileName);
            string destFileWord = System.IO.Path.Combine(copyToDir, rnd + ".docx");
            File.Copy(sourceFile, destFileWord, true);


            using (WordprocessingDocument wDoc = WordprocessingDocument.Open(destFileWord, true))
            {
                XDocument xDoc = wDoc.MainDocumentPart.GetXDocument();
                IEnumerable<XElement> contentz = xDoc.Descendants(W.p);
                foreach (var item in replaceList)
                {
                    OpenXmlRegex.Replace(contentz, new Regex(item.find), item.replace, null);
                }
                wDoc.MainDocumentPart.PutXDocument();

                foreach (var item in wDoc.MainDocumentPart.HeaderParts)
                {
                    IEnumerable<XElement> contenty = item.GetXDocument().Descendants(W.p);
                    foreach (var itemx in replaceList)
                    {
                        OpenXmlRegex.Replace(contenty, new Regex(itemx.find), itemx.replace, null);
                    }
                    item.PutXDocument();
                }

            }
}
 

janjel

Tüccar
Katılım
1 Ekim 2018
Mesajlar
49
Tepkime puanı
28
nuget paketleri
DocumentFormat.OpenXml
OpenXmlPowerTools

başka beleş alternatifi yok gibi, olanlar da net standart desteklemiyor

async a çevirip kullanabilirsiniz dosya üzerinde işlem yaptığı için ana sunucu threadını çok yoruyor, requestler yavaşlıyor dolayısıyla

kime kullanmaycak ama olsun :d
 
Üst