MS Word 플러그인을 작성 중입니다. 여전히 VSTO를 배우는 초기 단계에 있습니다. 그래서 기본적으로 지금까지 내가 Word 문서에 무슨 다소 다음과 같은 형태로 일부 사용자 작성 텍스트 (완전한 Word 문서)입니다 :VSTO를 사용하여 Word 문서의 읽기 및 수정
Hello, my name is <%NAME%>. I am <%AGE%> years old and i live in <%COUNTRY%>.
는 그 < %%>은 변수 어떤 사용자의 드래그 앤 드롭에서 사용자 지정 작업 창.
내가하고있는 일은 이러한 변수를 일부 데이터 파일에서 읽은 실제 데이터 값으로 대체하는 것입니다. 하지만 지금은 내가 찾고있는 것은 String에서 현재 액티브 문서의 내용을 읽은 다음 그 변수를 더미 데이터 값으로 바꾼 다음 이전 값을이 새로운 값으로 바꾼 실제 값을 실제 값으로 바꿉니다. NAME, AGE 등 대신에 onSaveAs 이벤트에서 가급적이면 사용할 수 없으므로 BeforeSave
이벤트에서 수행해야합니다.
- 는 현재 문서의 내용을 읽고 모든 내가 찾고 있어요 한마디로
는 방식이다.
- 해당 내용을 수정하십시오.
- 다시 작성하십시오.
저는 지금 웹과 MSDN을 몇 시간 동안 검색해 왔지만 실제로 아무것도 찾을 수 없거나 구현할 수 없습니다.이 기능을 처음 사용하기 때문에 구현할 수 없습니다.
내가 이것을 달성하기 위해 읽은 기사 중 일부는 다음과 같습니다
add-in in VSTO - How to get text from Word document using Ribbon with button
How To Read & Write Text From Word Document Using VSTO In C#
Globals.ThisAddIn.Application.Selection.Text;
이는 선택한 텍스트를 제공하지만 난이 문서의 모든 텍스트가 선택이 아닌 필요 둘 다 선택했다. 내 ThisAddin.cs에서
현재 코드는 다음과 같습니다 도움/방향
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Word = Microsoft.Office.Interop.Word;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Tools.Word;
namespace dragdrop
{
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e){Globals.ThisAddIn.CustomTaskPanes.Add(new OrdersListUserControl(), "Drag and Drop List Items on Word Doc").Visible = true;}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e){}
public void OnDropOccurred(object data) //adding dropped text on current cursor position.
{
Word.Selection currentSelection = Application.Selection;
currentSelection.TypeText(data.ToString());
}
#region VSTO generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}
모든 종류의 환영 이상입니다. 감사.
편집 : 내가 사용 내용을 얻을 수 있었다 :
Globals.ThisAddIn.Application.ActiveDocument.Range(0, 5).Text
하지만 이것에 문제가 최종 범위는 문서의 전체 길이를 초과하는 경우가 충돌 것입니다! 그래서 두 번째 인수로 제공하기 위해 문서의 길이를 얻는 방법 또는 더 좋은 방법이 있습니까? 또한 나는 텍스트를 읽고 그것을 다시 쓰면 텍스트가 포맷팅과 스타일링을 잃어 버리게되어 궁금합니다. 그래서 내가 성취하고자하는 것을 보존 할 수있는 방법이 있습니까? 이러한 모든 혼동을 해결해 주셔서 감사합니다.
문서의