簡體   English   中英

如何使用C#刪除Word中兩個書簽之間的文本

[英]How to delete text between two bookmarks in word with c#

我在Word文檔中有兩個書簽。 在這些書簽之間有一些文本。

現在,我希望能夠通過使用C#Office Interop刪除此文本。

我已經在VBA中工作了,但是如何在C#中做到這一點?

Dim delRange As Range
Set delRange = ActiveDocument.Range

delRange.Start = delRange.Bookmarks("HTML_SECTION_START").Range.End
delRange.End = delRange.Bookmarks("HTML_SECTION_END").Range.Start
delRange.Delete

嘗試這個:

        _Application app = new Application();
        try
        {
            _Document doc = app.Documents.Open("c:\\xxxx\\doc.doc");
            try
            {
                Range delRange = doc.Range();
                delRange.Start = doc.Bookmarks.get_Item("HTML_SECTION_START").Range.End;
                delRange.End = delRange.Bookmarks.get_Item("HTML_SECTION_END").Range.Start;
                delRange.Delete();
                doc.Save();
            }
            finally
            {
                doc.Close();
            }
        }
        finally
        {
            app.Quit();
        }

您可以使用Bookmark.Exists保護Bookmark get_Item。

編輯:您應該保存並關閉文檔和應用程序

Oki,所以我現在開始工作了,這要感謝Qsebas在上次編輯中取得的突破。 我將vs2005與.net framework 2.0一起使用,因此我不得不對其進行一些修改,因此,我將功勞歸於Qsebas。

如果有人感興趣,這就是我最終得到的。

using Word = Microsoft.Office.Interop.Word;

public class user
{
    public string Convert(string input, string output)
    {
        object oMissing = System.Reflection.Missing.Value;
        object readOnly = false;
        object oInput = input;
        object oOutput = output;
        object oFormat = Word.WdSaveFormat.wdFormatFilteredHTML;

        object html_start = "HTML_SECTION_START";
        object html_end = "HTML_SECTION_END";
        object move = -1;
        object charUnit = Word.WdUnits.wdCharacter;


        Word._Application app = new Word.Application();
        try
        {
            Word._Document doc = app.Documents.Open(ref oInput, ref oMissing, ref readOnly, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref isVisible, ref oMissing, ref oMissing, ref oMissing, ref oMissing);

            try
            {
                Word.Range dRange = doc.Range(ref oMissing, ref oMissing);
                dRange.Start = doc.Bookmarks.get_Item(ref html_start).Range.End;
                dRange.End = doc.Bookmarks.get_Item(ref html_end).Range.Start;
                dRange.Delete(ref charUnit, ref move);
                doc.Save();

                app.Quit(ref oMissing, ref oMissing, ref oMissing);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(app);

                return "";
            }
            catch (Exception e)
            {
                app.Quit(ref oMissing, ref oMissing, ref oMissing);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(app);

                return e.ToString();
            }
        }
        catch (Exception e)
        {
            app.Quit(ref oMissing, ref oMissing, ref oMissing);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(app);

            return e.ToString();
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM