Docx - 删除文档部分

时间:2015-08-20 15:32:11

标签: c# regex novacode-docx

有没有办法删除文档中可以指定开始和结束标记的部分?

我需要一种方法,我可以通过传入我的开始和结束捕获来删除文档的一部分,(@@ DELETEBEGIN和@@ DELETEEND)

例如我在我的文档中有这个:

  

您好,欢迎使用本文档

     

@@ DELETEBEGIN {要检查代码的一些值}

     

如果值为true,将删除一些文本

     

@@ DELETEEND

     

最后一行

2 个答案:

答案 0 :(得分:2)

如果您需要删除@@ DELETEBEGIN到@@ DELETEEND的文本,其中@@ DELETEBEGIN不在Paragraph的开头且@@ DELETEEND不在Paragraph的末尾,这段代码应该有用。

DocX document = DocX.Load("C:\\Users\\phil\\Desktop\\text.docx");
bool flag = false;
List<List<string>> list1 = new List<List<string>>();
List<string> list2 = new List<string>();
foreach (Novacode.Paragraph item in document.Paragraphs)
{
    //use this if you need whole text of a paragraph
    string paraText = item.Text;
    var result = paraText.Split(' ');
    int count = 0;
    list2 = new List<string>();
    //use this if you need word by word
    foreach (var data in result)
    {
        string word = data.ToString();
        if (word.Contains("@@DELETEBEGIN")) flag = true;
        if (word.Contains("@@DELETEEND"))
        { 
            flag = false;
            list2.Add(word);
        }
        if (flag) list2.Add(word); 
        count++;
    }
    list1.Add(list2);
}
for (int i = 0; i < list1.Count(); i++)
{
    string temp = "";
    for (int y = 0; y < list1[i].Count(); y++)
    {
        if (y == 0) 
        {
            temp = list1[i][y];
            continue;
        }
        temp += " " + list1[i][y];                   
    }
    if (!temp.Equals("")) document.ReplaceText(temp, "");
}
document.Save();

我必须赞同这个post来循环每个单词。

答案 1 :(得分:1)

我想我找到了解决方法,至少它对我有用,如果有什么我能做得更好的话请告诉我:

deleteCommand是@@ DELETEBEGIN字符串,deleteEndCommand是@@ DELETEEND

    function uploadBlobOrFile(fileData) {
        var xhr = new XMLHttpRequest();
        xhr.open('POST', "http://172.27.15.26:8000/ById/FileUploadService", true);

        xhr.withCredentials=true;
        xhr.onload = function (e) {
            progressBar.value = 0;
            progressBar.textContent = progressBar.value;
        };
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && xhr.status == 200) {
                console.log("success");
            }
        };
        var data = new FormData();
        data.append("fileName", "FileName.txt"); 
        data.append("RequestStream", file);

        xhr.send(data);
    }